[java] 프로그래머스 - 124 나라의 숫자

최대 1 분 소요

업데이트:

문제

프로그래머스-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;
  }
}

댓글남기기