124 나라 숫자

124 나라 숫자
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
32
33
34
35
36
// https://programmers.co.kr/learn/courses/30/lessons/12899
function solution12909(n) {
var answer = [];
var arr = '';
var N = n;

var seq = ['4', '1', '2'];
// console.log(seq[seq.length - 1]);
while (true) {
var tmp = n % 3;

answer.push(tmp);
// if (n <= 2) {
// break;
// }

if (tmp == 0) {
n = (n - tmp - 3) / 3;
} else {
n = (n - tmp) / 3;
}

if (n == 0) {
break;
}
}

while (answer.length != 0) {
arr += seq[answer.pop()];
}

// console.log(answer);
// console.log(N, arr);
// console.log("------------");
return arr;
}

해설

  • 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
  • 이렇게 이상한 숫자로 변환시키는 문제이다
  • 3진법 같아 보이지만 여기에는 함정이 있다….
  • 3진법이 아닌데 3개 숫자로만 표현해야한다
  • 경험으로 알게된.. 자릿수가 바뀔때 이상하게 바뀐다는 건데..
  • 나머지가 0이 될 경우에 == n이 3의 배수의 경우에 추가로 처리해줘야한다
  • 이해?를 돕기위해 그림을 그렸다
  • 왼쪽이 일반적인.. 상식적인 3진수이고
  • 오른쪽이 124 나라의 수이다
  • 중간은 124 나라의 수인데, 3진수와 시작을 똑같이 하기 위해 조작한 것이다
  • 3진수와 중간을 비교해보면 중간중간 정신나간 부분이 보인다
  • 이런 특징? 때문에 124나라는 적은 자릿수로 더 많은 숫자를 표현할 수 있다

  • 이문제는 해결법을 짠하고 알아냈다기보다
  • 계속 해보면서 알게된 규칙들을 적용시키면서 풀린거라
  • 설명을 잘 못하겠다..

  • 숫자 때문에 헷갈려 죽을뻔..
  • 아무튼 정신나간 124 나라이다
Author

chinsung

Posted on

2020-09-18

Updated on

2021-08-04

Licensed under

댓글