빠에야는 개발중

124나라의 숫자 본문

공부/알고리즘 문제

124나라의 숫자

빠에야좋아 2018. 3. 12. 18:17

1,2,4 세 개의 숫자만 쓰는 124나라가 있습니다.

124나라에서 사용하는 숫자는 다음과 같이 변환됩니다.

  • 10진법의 1 → 1
  • 10진법의 2 → 2
  • 10진법의 3 → 4
  • 10진법의 4 → 11
  • 10진법의 5 → 12
  • 10진법의 6 → 14
  • 10진법의 7 → 21

10진법의 수 N이 입력될 때, 124나라에서 쓰는 숫자로 변환하여 반환해주는 change124 함수를 완성해 보세요. 예를 들어 N = 10이면 “41”를 반환해주면 됩니다.

리턴 타입은 문자열입니다.


어렴풋이 떠오른 풀이 방법은 3으로 나누는 것이었다. 실제로 예시는 마치 3진수를 0을 3으로 바꾸고 3을 4로 바꾼 모습이기 때문이다. 그런데 한가지 문제가 있었는데, 그것은 1, 2, 4로만 숫자를 표시해야하기 때문에 3으로 나누어 떨어졌을 때 자리수를 나타내줄 0이 없다. 그러므로 1씩 낮춰줘야한다.

방법적으로는 처음에 재귀를 사용하려고 했었는데 여러 난관에 봉착해서 결국 검색을 동원했다. 3진수를 구하는 방법에 대해서 떠올린 것은 좋았으나 그 아이디어를 구체화 하는 과정에서 숙련도가 부족했던 것 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class OneTwoFour {
    public String change124(int n) {
        String answer = "";
        int[] arr = {412};
        int a;
        while (n > 0) {
            a = n % 3;
            n = n / 3;
            if (a == 0) {
                n -= 1;
            }
            answer = arr[a] + answer;
        }
        return answer;
 
    }
 
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        OneTwoFour oneTwoFour = new OneTwoFour();
        System.out.println(oneTwoFour.change124(10));
    }
}
 
cs


'공부 > 알고리즘 문제' 카테고리의 다른 글

하노이의 탑  (0) 2018.03.14
2xn 타일링  (0) 2018.03.14
땅따먹기  (0) 2018.03.11
공항 건설하기  (0) 2018.03.11
가장 큰 정사각형 찾기  (0) 2018.03.10
Comments