출처
❓Question
—문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
- 124 나라에는 자연수만 존재합니다.
- 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
—제한사항
- n은 500,000,000이하의 자연수 입니다.
❗Solution
function solution(n) {
return n === 0 ? '' : change124(parseInt((n - 1) / 3)) + [1, 2, 4][(n - 1) % 3];
}
→ 진법변환을 함수 없이 직접 코딩으로 짜는 거랑 똑같은 문제이다.
→ 단지 3진법을 0,1,2로 표현하는 대신에 1,2,4로 표현하는 것이다.
→ 3항 조건 연산자를 사용하여 n이 0이 될때까지 solution함수를 돌리는 재귀함수이다.
—코드 풀어보기
function solution(n) {
if (n === 0) {
return ''
} else {
const digit = [1,2,4]
const tmp = digit[(n-1) % 3]
return solution(parseInt((n-1) / 3)) + tmp
}
}
→ 이 두 함수는 완전히 같은 함수이다.
→ 몫은 0이 될때까지 solution에 넣고 나머지만 계속 빠지면서 [1, 2, 4] 배열의 인덱스와 맞는 값을 계속 합쳐주면 된다.
❗모든 함수의 n-1을 하는 이유는 숫자는 1부터 시작하고 인덱스는 0부터 시작하기 때문에 맞춰주어야 한다.
❗️parseInt()를 사용하는 이유는 자바스크립트의 나눗셈은 실수로 나오기 때문에 정수(내림)로 변환해야한다.
Uploaded by Notion2Tistory v1.1.0