본문 바로가기
코딩테스트/Java

[Level2] 124 나라의 숫자 답안 및 풀이

by SRin23 2022. 1. 10.

◇ 문제 설명

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

 

◇ 제한 조건

  • n은 500,000,000이하의 자연수 입니다.

 

◇ 입출력 예시

n result
1 1
2 2
3 4
4 11

 

◇ 초기 내용

※ [출처] 프로그래머스-코딩테스트 연습-문제명

※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.

class Solution {
    public String solution(int n) {
        String answer = "";
        return answer;
    }
}

 


◇ 풀이 과정

124나라의 숫자의 규칙은 이러하다.

10진수 124나라 10진수 124나라 10진수 124나라 10진수 124나라 10진수 124나라
1 1 4 11 7 21 10 41 13 111
2 2 5 12 8 22 11 42 14 112
3 4 6 14 9 24 12 44 15 114

Ex1) n = 5라면 12이다.

5/3 = 1 5%3 = 2
1/3 = 0 1%3 = 1

Ex2) n = 9이라면 24이다.

9/3 = 3 -> 2
※값이 딱 나누어 떨어질땐 값을 1 감소
9%3 = 0(=4)
※0일땐 4로 변환
2/3 = 0 2%3 = 2

Ex3) n = 14라면 112이다.

14/3 = 4 14%3 = 2
4/3 = 1 4%3 = 1
1/3 = 1 1%3 = 1

※값을 밑에서 부터 읽어야하므로 현재문자열의 앞에 새로운 문자열을 추가하며 작성해야한다.

 

◇ 답안

더보기
class Solution {
    public String solution(int n) {
        String answer = "";
        
        //n을 3으로 나눈 값을 저장할 변수
        int value = n;
        
        while(true){
        	//n을 3으로 나눈 나머지를 저장할 변수
            int remainder = value%3;
            
            //value를 3으로 나누어 value에 저장
            value/=3;
            
            //만약, 나머지가 0보다 크다면
            if(remainder>0){
            	//그 나머지 값을 answer 문자열 앞에 붙여 answer에 저장
                answer = Integer.toString(remainder) + answer;
            }
            //만약, 나머지가 0이라면(3의 나머지는 0, 1, 2뿐이다)
            else{
            	//answer 문자열 앞에 4를 붙여 answer에 저장 후
                answer = Integer.toString(4) + answer;
                //value의 값을 1 감소시킨다.
                value--;
            }
            
            //위 코드를 value가 0이 될때까지 반복한다.
            if(value==0){
                break;
            }
            
        }
        
        return answer;
    }
}

 

◇ 실행결과

124 나라의 숫자 실행결과

 

◇ 출처

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

댓글