이게 나라?
문제
[코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr](https://programmers.co.kr/learn/courses/30/lessons/12899)
풀이
function solution(n) {
const answer = [];
/*
1, 2, 4를 사용해서 차례대로 숫자가 커질 때 마다 숫자가 늘어남.
숫자를 3으로 나눠서 나머지를 그대로 뒷자리에.
몫은 3으로 나눠지지 않을 떄 까지 재귀.
*/
const divider = (val) => {
const remain = val % 3; // 나머지
let share = parseInt(val / 3); // 몫
if(remain === 0) {
share -= 1;
answer.push(4)
}else answer.push(remain);
if(val <= 3) return;
divider(share);
}
divider(n);
return answer.reverse().join('');
}
- 처음에 규칙도 못찾고 해맸는데, 규칙을 찾고 코드를 짠 것도 너무 지저분함.
나름 개선한 풀이
function solution(n) {
const answer = [];
const pattern = [4, 1, 2];
/*
1, 2, 4를 사용해서 차례대로 숫자가 커질 때 마다 숫자가 늘어남.
숫자를 3으로 나눠서 나머지를 그대로 뒷자리에.
몫은 3으로 나눠지지 않을 떄 까지 재귀.
*/
const divider = (val) => {
const remain = val % 3; // 나머지
answer.push(pattern[remain]);
if(val <= 3) return;
divider(remain === 0 ? parseInt(val / 3) - 1 : parseInt(val / 3));
}
divider(n);
return answer.reverse().join('');
}
- pattern 이라는 배열을 만들어서 index로 패턴에 접근할 수 있도록 수정함.
문제가 굉장히 신선했다..!
이게 나라?
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] SQL - NULL 처리하기 (0) | 2020.05.22 |
---|---|
[프로그래머스] SQL - 입양 시각 구하기(2) (0) | 2020.05.22 |
[프로그래머스] 스택/큐 - 프린터 (0) | 2020.05.20 |
[프로그래머스] 힙(heap) - 이중 우선순위 큐 (3) | 2020.05.20 |
[프로그래머스] 힙(Heap) - 더 맵게 (0) | 2020.05.19 |