IT/코딩 테스트 연습

프로그래머스 코딩 테스트 - 124나라

Lyk 2021. 1. 18. 20:44
728x90
반응형

 

 

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

 

programmers.co.kr

 

124나라

문제

출처 : 프로그래머스

 

 

 

 

 

 

 

 

 

 

 

나만의 풀이

class Solution {
        public String solution(int n) {
        	String answer = "";
        	String[] list = {"1","2","4"};

        	while(n != 0) {
           	 answer = list[--n % 3] + answer;
           	 n /= 3;
        	}

        	return answer;
        }
}

해설 ↓

더보기

접근 방법) 우선 숫자가 세 개로 이루어져있으니 3진수와 비슷한 느낌이라고 생각들어

아래 효율성 테스트에서 불합격 되었던 ② 번 방법으로 접근했습니다.

1. 자세히 보니 124 나라의 수엔 0이 없다는 점

2. 자리수가 바뀔때마다 n 을 -1 해주어야 값이 잘 나온다는 점

이 두 가지를 발견하고 반복문에서 항상 n을 1 씩 빼주며 돌렸습니다.

 

하지만 효율성이 좋지 않다고 나와 ① 방법인 거듭제곱을 해보았습니다.

하지만 거듭제곱 또한 연산이라 그런지 효율성이 좋지 않다고 나왔습니다.

생각해보니 ①번 방법은 1, 2, 4 세 가지 수는 일정하게 반복되지만 계속 연산을 해야하더라고요.

 

그래서 애초에 1, 2, 4 를 배열에 넣고 계산해보는 맨 위 풀이대로 진행해보았더니 효율성 테스트에 통과하였습니다.

 

효율성 테스트에서 불합격 되었던 코드들...↓

① 거듭제곱

더보기
class Solution {
	public String solution(int n) {
    		String answer = "";
            
        	do {
        	answer = (int)Math.pow(2, --n % 3) + answer;
			n /= 3;
		} while(n != 0);
        
        return answer;
    }
}

② 3진수

더보기
public class Solution { 
    public String solution(int n) { 
    	String answer = "";
        
    	do { 
     	 answer = (--n % 3) + answer; 
      	n /= 3; 
    	} while(n != 0); 
        
   	 return answer.replaceAll("2", "4").replaceAll("1", "2").replaceAll("0", "1"); 
    } 
}
728x90
반응형

'IT > 코딩 테스트 연습' 카테고리의 다른 글

프로그래머스 코딩 테스트 - 프린터  (0) 2021.01.05