티스토리 뷰

728x90
반응형

1. 문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

  1. 124 나라에는 자연수만 존재합니다.

  2. 124나라에는 모든 수를 표현할 대 1, 2, 4만 사용합니다.

예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

10진법 124나라 10진법 124나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

자연수 n이 매개변수로 주어질 대, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.

제한사항

- n은 500,000,000 이하의 자연수입니다.

 

2. 풀이

2-1. JavaScript 언어

function solution(n) {
    var answer = '';
    var residue = 0;
    var period = ['4', '1', '2'];
    
    while(n > 0) {
    residue = n % 3;
    n = parseInt(n / 3);   
    
    if(residue === 0) {
      n = n - 1;  
    }
    answer = period[residue] + answer;
  }
    return answer;
}

규칙을 보면 1, 2, 4 순으로 진행되는 것을 알 수 있다.

자바스크립트의 배열을 이용한 방법이다.

period[0], period[1], period[2]에 숫자를 넣는 방식을 한다. 순서가 4부터 하는 이유는 3을 나눌 때 나머지가 0인경우 4이기 때문에 4를 먼저 진행하였다.

그리고 나머지 값을 이용하여 오른쪽부터 차례로 값을 구하는 방식이다.

예를 들어 14의 값을 넣을 때

residue = 14 % 3 = 나머지 2;

n = parseInt(14 / 3) = 몫 4;

값이 나오는데

아직 residue가 0이 아니기 때문에 다음으로 넘어가

answer = period[2] + answer = 2 + answer = 2

이므로, 제일 오른쪽 값 2가 나왔다.

 

그리고 아직 n은 4라는 숫자가 0보다 크기 때문에 while문을 나오지 못한다.

다시 반복하면 3을 나눌 대 1의 몫과 1의 숫자가 나온다.

answer = period[1] + answer

answer = period[1] + period[2]

 

그리고 마지막으로 1을 한 번 더 반복하면

answer = period[1] + period[1] + period[2]

가 나오게 됩니다.

 

 

 

방법은 단순하나 과정을 나열하면 길어서 헷갈리기 쉬웠던 문제였다.

오랜만에 자바스크립트를 하게 되어서 검색을 해보았다.

 

728x90
반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함