문제
https://programmers.co.kr/learn/courses/30/lessons/12899
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
코드
function solution(n) {
let answer = '';
while (n > 0) { //n이 0이 아닐때까지 반복
switch (n % 3) { //3으로 나눈 나머지가 각각 0,1,2인 경우에
case 1:
answer = "1" + answer; //10진수가 10인경우에는 맨처음 answer = '1' 그다음 switch문 돌면 answer = '4' + answer = '4'+'1' = '41'
n = Math.floor(n / 3);
break;
case 2:
answer = "2" + answer;
n = Math.floor(n / 3);
break;
case 0:
answer = "4" + answer;
n = n/3 - 1; //3으로 나눈 나머지가 0인 경우에(case 0)만 3으로나눈몫에 -1을 해줌
break;
}
}
return answer;
}
후기
- 직접 작성해본 변환표이다. 제일 처음 찾은 규칙은 각 10진수를 3으로 나눈 나머지가 1일 때는 1로 변환, 2일 때는 2로 변환, 0일 때는 4로 변환되는 것을 알 수 있었다. 그리고 찾은 두 번째 규칙으로는, 나머지가 0일 때 즉, 10진수가 3의 배수일 때만 몫에 어딘가 규칙이 어긋난 것 같은 느낌을 받았다. 10진수가 각각 3, 6, 9일 때, 몫이 0, 1, 2여야 규칙이 완성될 것 같았다
-
- 그러므로 3으로 나눈 나머지가 1, 2인 경우(case 1, 2)에는 몫을 그대로 구하면 되지만, 나머지가 0인 경우(case 0)에는 3으로 나눈 몫에 -1을 해줘야 한다. 그렇게 해서 구한 n은 다시 while 문을 돌며 0이 아닐 때까지 반복하여 124숫자를 완성하게 된다
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 실패율 / JavaScript (0) | 2022.01.11 |
---|---|
[Programmers] 두 개 뽑아서 더하기 / JavaScript (0) | 2022.01.08 |
[Programmers] 기능개발 / JavaScript (0) | 2022.01.07 |
[Programmers] 체육복 / JavaScript (0) | 2022.01.07 |
[Programmers] 2016년 / JavaScript (0) | 2022.01.07 |