일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ROT13
- typescript
- 모던 자바스크립트
- JavaStritp
- 코딩태스트
- Bandit
- REST API
- RestAPI
- linux
- vanila js
- graphql
- tr명령어
- node
- html
- 카카오
- mutation
- 코딩테스트
- 자바스크립트의 역사
- javascript
- await
- 백준
- typeorm
- Query
- kakao
- 실패율
- js
- 자바스크립트
- 피보나치 수
- nestjs
- 프로그래머스
- Today
- Total
꿀 떨어지는 코딩 양봉장
프로그래머스_Level.2 124나라의 숫자 본문
1.문제설명
문제: 124나라의 숫자
programmers.co.kr/learn/courses/30/lessons/12899
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
- 124 나라에는 자연수만 존재합니다.
- 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 함수를 완성해 주세요.
2. 제한 사항
- n은 500,000,000이하의 자연수 입니다.
3.입출력 예
n | result |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
📌나의 풀이
124 총 3개의 숫자를 사용하니 3진수를 활용해서 풀어야겠다는 생각을 했습니다. 3진수를 가지고 어떻게 활용을 해야할지 고민하던 중 0을 어떻게 표현할 지 몰라 여러 자료를 참고했습니다.
124나라에서 4를 0으로 대체하는 대신에
n%3=== 0일 때 4를 answer에 푸쉬하는 대신 n에 (n-1)/3을 합니다.
function solution(n) {
var answer = '';
while(n>0){
if(n%3===0){//나머지가 0일때
answer = 4+''+answer;
n = Math.floor((n-1)/3);
}else{
//answer.push(n%3);
answer = (n%3)+''+answer;
n = Math.floor(n/3);
}
}
return answer;
}
다른 사람들의 코드를 보던도중 다른 방법으로 푼 사람을 봤습니다.
저는 n%3===0일 때 만 n-1을 한 다음 3으로 나누었지만 무족건 n-1을 하는 방법을 봤습니다. 그 코드를 참고하여 위 코드를 아래 코드를 바꿨습니다.
function solution(n) {
var answer = '';
while(n>0){
if(n%3===0){//나머지가 0일때
answer = 4+''+answer;
}else{
answer = (n%3)+''+answer;
}
n = Math.floor((n-1)/3);
}
return answer;
}
무족건 n = Math.floor((n-1)/3);을 하는 이유는
13/3 = 4...1 이고 12/3 = 4 입니다.
10/3 = 3...1 이고 9/3 = 3 입니다. 1을 빼든 안 뺴든 3으로 나눈 몫은 동일 합니다.
만약
6/3 = 2..0 이고 5/3 = 1..2입니다.
6을 3으로 나눈 나머지가 0이기 때문에 if(n%3===0)일 때 n-1을 하는 이유와 똑같습니다.
💡배운점
- 어떤 숫자 N을 a로 나눈 나머지가 0이 아니라면 N/a와 (N-1)/a가 똑같다.
✔참고 자료
giantpark197cm.tistory.com/181
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스_Level.2 타겟넘버 (0) | 2021.05.08 |
---|---|
프로그래머스_Level.2 스킬트리 (0) | 2021.05.08 |
프로그래스_Level.2 게임 맵 최단거리 (0) | 2021.05.07 |
프로그래머스_Level.2 구명보트 (0) | 2021.05.06 |
프로그래머스_Level.2 멀쩡한 사각 (0) | 2021.05.06 |