티스토리 뷰

💡 [3차] n진수 게임 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

💡 풀이 과정

 

n진수 만드는 방법을 익혀야한다. 

만드는 방법에서 StringBuilder를 이용했다. 

만약 14를 2진수로 나타낼 때에는 StringBuilder의 insert를 이용해야하며,

구한 진수 값을 append로 붙여 구하고자 하는 길이까지 구한다. 

 

+찾아보니까 Integer.toString(i,n) 하면 각각에 맞는 진수를 변환해준다는데 몰랐음. . 🥹

 

 

💡 전체 코드 

 

class Solution {
    public String solution(int n, int t, int m, int p) {
        
        String nums = "0123456789ABCDEF";
        StringBuilder total = new StringBuilder("0");
        int size = t * m; //전체 길이
        int st = 0; //시작하는 수 0부터.. 
        
        while (total.length() <= size) {
            int value = st;
            StringBuilder temp = new StringBuilder("");
            while (value > 0) {
                temp.insert(0,nums.charAt(value%n));
                //10~15까지는 알파벳으로 나타내야하므로, 미리 선언된 값에서 가져왔다. 
                value /= n;
            }
            total.append(temp);
            st++;
        }
        
        String answer = "";
        for (int i = p-1; i < size; i += m) {
            answer += total.charAt(i);
        }
        
        return answer;
    }
}

 

💡 수행 시간 

 

테스트 1 통과 (22.74ms, 75.4MB)
테스트 2 통과 (20.28ms, 88.1MB)
테스트 3 통과 (18.69ms, 89.5MB)
테스트 4 통과 (13.79ms, 79.2MB)
테스트 5 통과 (13.42ms, 70.5MB)
테스트 6 통과 (11.74ms, 78.7MB)
테스트 7 통과 (13.46ms, 80.8MB)
테스트 8 통과 (12.68ms, 81.1MB)
테스트 9 통과 (12.74ms, 77.6MB)
테스트 10 통과 (17.36ms, 76.7MB)
테스트 11 통과 (13.99ms, 90.2MB)
테스트 12 통과 (11.20ms, 80.7MB)
테스트 13 통과 (12.56ms, 78MB)
테스트 14 통과 (35.74ms, 81.9MB)
테스트 15 통과 (30.33ms, 86.7MB)
테스트 16 통과 (35.83ms, 93.6MB)
테스트 17 통과 (12.87ms, 73.2MB)
테스트 18 통과 (34.54ms, 79.6MB)
테스트 19 통과 (13.09ms, 65.4MB)
테스트 20 통과 (15.47ms, 79.6MB)
테스트 21 통과 (44.46ms, 82.6MB)
테스트 22 통과 (24.29ms, 75.3MB)
테스트 23 통과 (21.72ms, 73.7MB)
테스트 24 통과 (31.15ms, 81.9MB)
테스트 25 통과 (29.65ms, 76.6MB)
테스트 26 통과 (20.94ms, 77.9MB)