문제
124 나라에는 자연수만 존재하고,
124 나라에서는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
10진법 : [1,2,3,4,5,6,7,8,9,10] 1
124 나라 : [1,2,4,11,12,14,21,22,24,41]
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
풀이
일종의 진법 변환과 같은 원리로 보아야 할 것 같다.
진법 변환 시에는 몇 진수를 이용한 표현법인지를 파악하는 것이 우선이다.
여기서는 1,2,4 숫자 세 개를 사용하므로 진법 표기의 주기는 3이었다.
10진법 자연수 n을 3으로 나누었을때의 나머지에 대해서 각각 0, 1, 2일 때를 고려하면 될 것이다.
function solution (n) { var answer = ''; //최종적으로 124 나라법으로 표현될 숫자를 문자열로 return한다. var residue = 0; // 자연수 n을 3으로 나누었을 경우, 나머지를 다루기 위한 함수. var period = ['4', '1', '2']; while(n > 0) { residue = n%3; n = parseInt(n/3); // 이 부분이 함수의 핵심이라고 생각한다. 주기가 3인 표현법의 반복문을 순회할 때의 조건 설정 측면에서. if(residue === 0) { n = n - 1; // 이 부분 역시 중요하다. 3으로 나누어 떨어지는 경우는, 124 나라에서 앞자리 수가 바뀌거나 숫자의 길이가 바뀌는 구간이기 때문이다. } answer = period[residue] + answer; } return answer; }
N-Queens 알고리즘 (N x N 체스판에 N개의 퀸 체스말 놓기) (0) | 2019.06.09 |
---|---|
Find NthFibonacci without recursion(반복문을 이용한 n번째 피보나치 수 찾기) - Javascript (0) | 2019.06.09 |
이상한 문자 만들기 - Javascript (0) | 2019.04.16 |
시저 암호 - Javascript (0) | 2019.04.16 |
직사각형 별찍기 - Javascript (0) | 2019.04.10 |
댓글 영역