본문 바로가기
반응형

분류 전체보기151

Level2. 프로그래머스 숫자의 표현- JavaScript 문제설명 연속한 자연수들로 숫자 n을 표현해야 한다. n이 9라고 할때 2 + 3 + 4 = 9 4 + 5 = 9 9 = 9 라고 표현할 수 있다. 문제 풀이 어떤 n 보다 작은 수를 시작하는 자연수로 잡고 연속한 자연수를 만들 때 n이 되는지 안되는지 판별하는 함수를 만들고 제일 작은 수 1부터 n까지 순회하면서 해당 함수의 파라미터로 시작으로 하는 숫자를 넣으면서 진행 판별 function solution(n) { var answer = 0; function re(current, sum){ if(sum === n) return true; if( sum > n) return false; return re(current+1, sum+current); } for( let i = 1; i 2020. 11. 6.
Level3. 프로그래머스 이중우선순위큐 - JavaScript 문제 설명 값 입력, 최댓값 삭제 최소값 삭제의 명령어들을 배열로 받아서 명령어를 실행하고 최종 배열의 길이가 0이면 [0,0]을 반환 아니면 [최대값, 최소값]을 반환하는 문제다. q에 있는 원소를 우선순위에 맞게 저장하는게 관건이다. 만일 배열이 [3,3,1]이고 새로운 원소 4가 우선순위 큐에 들어간다고 했을 때 [4,3,3,1]이 되어야 한다. JS에 splice라는 array method를 이용하면 쉽게 배열에 원소를 추가할 수 있다. 코드 흐름 명령문 순회 명령어에 따라 처리 만일 입력이면 우선순위 큐에 새로운 원소를 우선순위를 고려하여 삽입 삭제라면 큐에서 최대값 또는 최소값 삭제 모든 명령문이 끝나고 정답 반환 function solution(operations) { var answer =.. 2020. 11. 6.
Level3. 프로그래머스 멀리 뛰기 - JavaScript 문제 설명 효진이는 1칸, 또는 2칸을 뛸 수 있다. 칸 n이 주어졌을 때 효진이가 n에 도달할 수 있는 모든 경우의 수를 찾아야 한다. n이 4일 때 (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (2, 1, 1) (2, 2) 모든 경우의 수는 5번이다. 이 문제는 조합으로 풀 수도 있고 DP로도 풀 수가 있다. DP로 푼다면 작은 문제로 나누고 이 문제들의 정답이 큰 문제를 해결할 수 있다는 규칙성을 찾아야 한다. 규칙은 F(n)에서 n이 3이상일 때 F(n) = F(n-1) + F(n-2)이다. function solution(n) { let dp = [0, 1, 2]; if( n 2020. 11. 5.
Level2. 프로그래머스 피보나치 수 - JavaScript DP를 이용하여 풀 수 있습니다. DP는 큰 문제를 나누어 작은 문제를 해결하면서 점차 점차 큰 문제를 해결하는 방식입니다. 핵심은 memoization인데 작은 문제의 정답을 기록해 두어서 다음 문제를 풀 때 활용합니다. 문제 설명 피보나치의 경우 f(n) = f(n-1) + f(n-2)입니다. 기본적으로 f(0) = 0 f(1) =1 입니다. f(2) = f(1) + f(0) 이므로 f(2)는 1입니다. 다음으로 f(3) = f(2) + f(1) 이므로 f(3)은 2입니다. 이런 식으로 0 1 1 2 3 5 8 ... 으로 커집니다. function solution(n) { const divider = 1234567 const dp = [0, 1]; for( let i = 2; i 2020. 11. 5.