자바 초급문제로 맨땅에 해딩하기

자바 Level 2 문제, 4. 124 나라의 숫자 완성

Jungsoomin :) 2020. 4. 30. 23:21

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12899)

자바 Level 2 문제의 124나라의 숫자 이다.

 

/*문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.

  1. 124 나라에는 자연수만 존재합니다.

  2. 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 함수를 완성해 주세요.*/

 

 

진수를 파악하면서 진수는 주기파악이 중요하다는 내용을 듣고  작성하던 클래스를 모두 끄고 새로 시작했다.

일단 다 3으로 처리하자고 정했다. 표현 수가 3개이니 주기는 3으로 보았다.

1%3 = 1 , 2%3 = 2 을 int 값으로 받아보니까 맞아 떨어지는데 문제는 3%3 = 0 이 문제였다. 이게 4이니 4로 변환을 잡아주고 나니까 n/3이 문제가 생겨나서 곰곰히 생각을 하다가 3을 강제로 떨궈서 한번 맞추어 보았다. 그 이후에 간단한 수들로 계산해 보았더니 맞아떨어지는 것을 확인했고, 이렇게해서 한번 짜보자고 생각을 했는데 왠걸..맞았다.

 

거의 때려 맞추듯이 맞아버려서 더 살펴보고 알아보고 있다. 3진수 과정에서 조금 틀은 것이라는 설명이 보이는데, 그럴 것이 1%3 = 1 , 2%3 =2 , 3%3 =0 으로 표현되기에 그런 것 같다. 진수 개념마다 잘 이해가 안되어 계속 갸우뚱하고는 하는데 오히려 맞아놓고 다른 수를 넣어가며 그 계산을 노트에 적어보느라 바빴다. 지금도 그러고 있기도하다. 일단 진수 개념을 확실하게 잡아봐야 개념이 잡힐 것 같다. 

 

 

 

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
package programmers_124나라의숫자;
 
public class Exam {
    public String solution (int n) {
        String answer = "";
    
        int check =0;//나머지
        while(n>0){
            check =n%3;
            n = n/3;//몫
            
            if(check ==0) {// 0 은 4
                check =4;
                n += -1;//<
            }
            
            answer = String.valueOf(check)+answer;
            
        }
        
        return answer;
    
    }
}
 
cs