반응형

JS 216

프로그래머스: 길 찾기 게임 - javascript(트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 트리를 생성하고, 트리를 탐색하면 되는 문제다.  ### 0. 기존 세팅  문제에서 주어지는 `nodeinfo`를 새로운 배열로 정리 및 정렬을 해야 한다. 기준은, -  노드의 번호는 idx+1 이 된다. -  노드의 x값은 node[0]이 된다. -  노드의 y값은 node[1]이 된다.  정렬은, - y값을 기준으로 내림차순을 한다. (이유: 부모 자식 부터 차례대로 tre..

백준 2110: 공유기 설치 - javascript(이진탐색, 그리디)

문제 출처 https://www.acmicpc.net/problem/2110 정답 풀이 흠 이 문제의 입력값을 봐보자. 집의 개수는 무려 (2공유기의 개수는 (2집의 좌표는 (0 엄청난 범위,,, 어떤 알고리즘이 생각나는가?이진탐색 !!!  이진탐색은 어떤 값을 기준으로 탐색해나갈 것인가가 중요하다. 여기서는 `공유기 사이의 최대거리`를 기준으로 탐색하면 되겠다.  공유기 사이가 될 수 있는 범위는 (1이상 ~ 가장 마지막 집 - 가장 첫번째 집) 이 될 것이다. 아래 그림을 보면 이해가 쉽다.   정리하자면,  - 공유기 거리의 최솟값은 : 1 - 공유기 거리의 최댓값은 :  마지막 집 위치 - 첫번째 집 위치    이제 문제를 두 부분으로 나눠서 생각하면 된다. - 공유기 최대 거리를 이진탐색으로 찾..

프로그래머스: 자물쇠와 열쇠 - javascript(단순 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 이런 문제는 시간을 두고 본인이 해결할 때까지 다른 사람이 푼 코드를 보지 않는다면 좋겠다. 어떤 특별한 알고리즘이 필요한 것이 아니라서,, 자기가 끈질기게 구현해보는 연습을 할 수 있는 좋은 문제인 것 같다.  하지만 이 정도의 아이디어는 얻고 혼자 풀면 좋을 것 같은데 아래 그림과 같이 주어진 lock을 가로, 세로 3배씩 확장시킨 그래프로 생각하는 것이다. 그래서 거기서 k..

프로그래머스: 매칭 점수 - 실수 축제 (중괄호랑 return)

아래와 같이 작성했을 때, idx를 찾지 못한 것을 발견했다. let urlIdx = pageArr.findIndex((p) => { p.match(//gi)}) 이유) - 화살표 함수가 중괄호로 감싸져 있기 때문 - 중괄호를 사용하면 명시적으로 `return` 키워드를 사용하지 않는 한, 함수는 'undefined'를 반환한다. - 이 경우, p.match()이 부분의 결과가 반환되지 않으므로, findIndex는 항상 -1를 받고 -1를 반환한다. let urlIdx = pageArr.findIndex((p) => { return p.match(/  그래서 return 을 명시적으로 추가해줘야 한다.  혹은  중괄호를 쓰지 않는 방법이 있다.  let urlIdx = pageArr.fin..

프로그래머스: [3차] 자동완성 - javascript(체이닝, 트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/17685 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이  아무래도, 다른 블로그의 설명이 충분하지 않았다. 그래서 혼자 이해하려고 하는데 시간이 꽤 걸렸다. 그래서 기록으로 자세히 남겨보려 한다.  자, 이 문제는 두개의 과정으로 나뉜다. - 먼저 주어진 words를 활용해서 트리를 생성할 것이다. - 우리가 생성한 트리를 탐색하면서 각 문자가 몇 글자까지 입력해야 하는지 셀 것이다.  코드를 살펴보기 전에 먼저 이해부터 하자.  ##..

프로그래머스: 무지의 먹방 라이브 - javascript(반복문 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 1. 총 음식 시간을 계산 const total = food_times.reduce((a,c) => a+c , 0)if(total - food_times 배열의 모든 요소를 더해서 총 음식을 먹는 시간을 계산한다. - 총 시간이 k보다 작거나 같으면 모든 음식을 다 먹었기 때문에 -1을 반환한다. 2. 음식 시간과 인덱스를 페어로 저장 및 정렬 food_times = food_t..

프로그래머스: n+1 카드게임 - javascript(구현, 조합)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258707 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트음, 이 문제는 카드를 선택하고, 넣고 , 빼고 이런식으로 접근하면 절대 못 풀 것 같다. 일단 평범한 나는 그렇다 !! 그 이유는 문제 예시를 봐보자. 1라운드에서 뽑을 수 있는 카드 1,10 이 있다고 치자. 이거를 keep 해놨다가 갑자기 3라운드에서 쓸 수 있는 게임이다. => 이걸 어떤식으로 표현할지,,,? 난 모르겠다 ;;  그리고, 두번째 이유로는 문제를 계속 ..

프로그래머스: 주사위 고르기 - javascript(조합, dfs, 이분탐색)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr전체 흐름 아무래도 문제의 전체흐름과 어떤 알고리즘을 사용했는지부터 짚고 가는 것이 좋겠다.  1. 주사위 선택하기- 조합 함수를 사용했다.  - ex) n이 4일 때, 주사위는 1,2,3,4가 있다. => 내가 주사위를 선택할 경우의 수는 "[1,2], [1,3],[1,4],[2,3],[2,4],[3,4]" 인 경우가 될 것이다.  2. 선택할 주사위 중 각각 하나의 수 선택하기 - df..

프로그래머스- 신규 아이디 추천 (정규식)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 코드 function solution(new_id) { const answer = new_id .toLowerCase() // 1 .replace(/[^\w-_.]/g, '') // 2 .replace(/\.+/g, '.') // 3 .replace(/^\.|\.$/g, '') // 4 .replace(/^$/,..

삽입 정렬 알고리즘

삽입정렬 - 각 숫자를 적절한 위치에 삽입하는 방법 - 필요한 때만 위치를 바꾼다. (선택 정렬과 버블정렬보다 더 빠름) - 시간 복잡도 O(N^2)- 기본적으로 i이전의 값들이 정렬이 되어있다고 가정- 특정한 경우에는 굉장히 빠르게 작동   - 거의 정렬된 상태에 한해서는 어떤 알고리즘보다 빠름 정리) 시간복잡도 O(N^2)를 가지는 정렬 알고리즘 : 선택 정렬, 버블 정렬, 삽입 정렬  내가 작성한 코드 function insertSort(arr){ for(let i=1; i value){ let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; j-- }..

반응형