https://programmers.co.kr/learn/courses/30/lessons/12899
[문제]
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 함수를 완성해 주세요.
[제한 조건]
n은 500,000,000이하의 자연수 입니다.
[고찰]
class Solution {
public String solution(int n) {
public String solution(int n) {
String[] number= {"4","1","2"};
String answer = "";
int num=n;
while(num>0) {
int remain=num%3;
num/=3;
/*
* 기존 3진법의 경우 3의 배수일 경우 자리수가 증가하지만
* 해당 문제는 4도 일의 자리에 올 수 있기 때문에
* 3의 배수일 경우 -1을 해주어야 한다.
*/
if(remain==0)
num--;
// 연산의 결과는 뒷쪽부터 붙여나간다.
answer=number[remain]+answer;
}
return answer;
}
}
[고찰]
풀이를 보면 어렵지 않은 문제였지만 해결 방법이 잘 떠오르지 않아 다른 사람의 해답을 참고했다. 3과 나눈 나머지를 뒷쪽부터 붙여나가는 알고리즘은 쉽게 이해할 수 있었지만 3과 나눠 떨어지면 왜 -1을 해줘야 하는지 이해하는데 시간이 좀 걸렸다. 좀 더 고민해볼껄 하는 아쉬움이 들었다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Level2] 타겟 넘버 (0) | 2021.07.29 |
---|---|
[프로그래머스_Level2] 기능개발 (0) | 2021.07.29 |
[프로그래머스_Level2] [1차] 캐시_2018 카카오 신입 공채 (0) | 2021.07.29 |
[프로그래머스_Level2] 스킬트리 (0) | 2021.07.26 |
[프로그래머스_Level2] 방문 길이 (0) | 2021.07.23 |