알고리즘/프로그래머스
[Lv2] 124 나라 숫자
창고
2021. 6. 21. 14:54
https://programmers.co.kr/learn/courses/30/lessons/12899
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
10진수는 0부터 9까지의 숫자를 이용해서 수를 표현하는 것
4진수는 0부터 3까지의 숫자를 이용해서 수를 표현하는 것
4진수를 이용해서 수를 표현하면
1(1), 2(2), 3(3), 4(10), 5(11), 6(12), 7(13), 8(20), 9(21)... 처럼 10진수를 4로 나누었을 때 '몫+나머지'의 형태로 표현
그렇다면 여기서 0을 사용 불가능하게 해서 1, 2, 3만 사용이 가능하다면
1(1), 2(2), 3(3), 4(11), 5(12), 6(13), 7(21), 8(22), 9(23)...
0을 제외했을 때 새로운 규칙이 나오는데, 이것을 파악해야 본 문제를 풀 수 있음.
function solution(n) {
let answer = '';
let remainder = ['4', '1', '2'];
let r;
let q = n;
while(1) {
r = q % remainder.length;
answer = remainder[r] + answer;
if(q % remainder.length === 0) {
q = Math.floor(q / remainder.length) - 1;
} else {
q = Math.floor(q/ remainder.length);
}
if(q <= 2) {
if(q !== 0) answer = q + answer;
break;
}
}
return answer;
}