본문 바로가기
코딩테스트/프로그래머스

[프로그래머스/java] 124 나라의 숫자 - num[n % 3]

by drCode 2022. 3. 13.
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

 

이 문제, 쉬운 것 같지만 어려웠다.

 

단순히 3으로 나눈 나머지만을 활용하여 푸는 문제인 줄 알았건만, 효율성 문제에서 시간초과로 탈탈 털려버렸다.

 

아래 와 같은 코드는 시간 초과가 나서 실패한 코드다.

 

class Solution {
    public String solution(int n) {
    	String answer = "";
        
        int num = n, r = 0;
    	
    	while(num > 0) {
    		r = num % 3;
    		
    		num /= 3;
    		if(r == 0) {
    			num--;
    			r = 4;
    		}
    		
    		answer = r + answer;
    	}

    	return answer;
    }
}

 

 

이 문제는 다른 블로그를 참고하여 풀었는데,

 

참고했던 곳이 어디인지 기억이 나지 않아서 그 곳의 링크를 달지는 못하지만,

 

간략한 설명을 하면

 

String[] num = {"4", "1", "2"};

 

배열을 사용하여, 

 

3으로 나눈 나머지가 0일 때, 4를 붙이는 계산 방식을 배열로 녹여내었다.

 

whlie 반복문에 조건을 n이 0보다 클 때라는 조건을 걸어서

 

답으로 리턴할 문자열에 num의 n을 3으로 나눈 나머지의 인덱스를 붙여넣고,

 

n은 n-1을 3으로 나눈 값을 넣으면 된다.

 

class Solution {
    public String solution(int n) {

    	String answer = "";
    	
    	String[] num = {"4", "1", "2"};

    	while (n > 0) {
    		answer = num[n % 3] + answer;
    		n = (n - 1) / 3;
    	}

    	return answer;
    }
}
728x90
반응형

댓글