티스토리 뷰
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]
가 나오게 됩니다.
방법은 단순하나 과정을 나열하면 길어서 헷갈리기 쉬웠던 문제였다.
오랜만에 자바스크립트를 하게 되어서 검색을 해보았다.
'ETC > Coding Test' 카테고리의 다른 글
programmers : 코딩테스트 연습 > 연습문제 > 문자열 다루기 기본 (0) | 2021.02.20 |
---|---|
programmers : 코딩테스트 연습 > 연습 문제 > 약수의 합 (0) | 2021.02.17 |
지그재그 응용편 (0) | 2020.12.05 |
코테 : 주변에서 잘 나온다는 지그재그 코딩테스트 (0) | 2020.12.03 |
코테추천사이트 : 앞으로 공부를 해보려고 기록하는 코딩테스트 사이트를 모아보았다. (0) | 2020.11.26 |
- Total
- Today
- Yesterday
- 배열
- 자바
- 재공부
- node.js
- CSS
- mongodb
- node
- array
- Git
- react
- 파이썬
- 함수
- Coding Test
- 노드
- java
- 리덕스
- redux
- 자바스크립트
- github
- 코딩테스트
- node-sass
- 리액트
- 프로그래머스
- 뷰
- javascript
- Visual Studio Code
- 리액트 유튜브
- programmers
- Switch
- 리액트 썸네일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |