[java] 프로그래머스 - 124 나라의 숫자
업데이트:
문제
프로그래머스-124나라의 숫자
입력받은 수 n을 1,2,4로 표현하는 문제.
1 -> 1
2 -> 2
3 -> 4
4 -> 11
5 -> 12
이런식으로 1,2,4로만 숫자가 이루어진다.
풀이
우선 1,2는 똑같이 1,2로 나온다. 하지만 3의 경우 4로 나온다.
4는 11, 4를 3으로 나눴을때의 몫 1, 나머지 1 을 합쳐 11이라고 생각을 했다.
6은 3으로 나눴을때 몫이 2지만, 원하는 결과는 14이다.
3을 3으로 나눴을 때 몫이 1, 나머지가 0인 경우를 고려했을 때
3의 배수는 (3으로 나눈 몫의 값 -1)뒤에 4를 붙이는 식으로 규칙을 찾았다.
만약 몫이 3이상이면 해당 과정 반복.
소스코드
class Solution {
public String solution(int n) {
if (n == 0)
return "";
if (n % 3 == 0) {
return solution((n / 3) - 1) + "4";
}
return solution(n / 3) + "" + n % 3;
}
}
다른사람의 코드
class Solution {
public String solution(int n) {
String[] num = {"4","1","2"};
String answer = "";
while(n > 0){
answer = num[n % 3] + answer;
n = (n - 1) / 3;
}
return answer;
}
}
댓글남기기