반응형
문제
문제 설명
10진수를 문제만의 규칙인 124진법으로 변환시키는 문제
- parameter로 들어온 숫자가 0보다 클 때 동안
while
문을 돌면서 124진수로 변환을 한다. 1, 2, 4
라는 3개의 수로 바꾸는 것이기 때문에 원래의 10진수에서 몫과 나머지가 필요하다.
- 몫은 처음에 parameter인 n으로 다시 저장되어 while문을 벗어나는 수가 될 수 있게 해 준다.
- 나머지는
restNum
이라는 나머지 저장 변수에 저장해 124진수를 만드는 데에 사용한다.
- 몫과 나머지를 2에서 구했으니 이것을 바탕으로 2진수를 구하는 방법과 비슷하게 3을 나눠서 답을 구해 보았다.
- 나머지가 0일 때는 4로 치환했다.
- 어라? 답이
4가 아닌 14
로 나온다. - 아래는 푼 과정을 그린 것이다.
- 여기서 규칙을 찾을 수 있었다. 3의 배수는 모두 한 단계씩 큰 숫자가 나왔다.
- 그럼 어떻게 해야 할까?
- 나머지가 0일 때(3의 배수일 때), 해당 몫에서 1을 빼줘야 한다. 1을 빼면 자리수가 하나 올라가는 것을 막아 문제에서 원하는 답을 찾을 수 있다.
- 나머지들을 while문에 있는 동안 계속 앞에 붙여 주면 끝난다.
성공 코드
const solution = (n) => {
let answer = "";
let restNum = 0;
while (n > 0) {
restNum = n % 3;
n = Math.floor(n / 3);
if (restNum == 0) {
n -= 1;
restNum = 4;
}
answer = restNum + answer;
}
return answer;
};
반응형