본문 바로가기
Algorithm/Programmers Java

[JAVA] 프로그래머스 LEVEL2 [3차] n진수 게임

by 제우제우 2024. 9. 29.

https://school.programmers.co.kr/learn/courses/30/lessons/17687

 

프로그래머스

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

programmers.co.kr

코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [3차] n진수 게임

 

난이도: LEVEL2

알고리즘 유형: 구현 

 

정답 코드

// 2 ~ 16 진수 중에 알파벳 사용은 16진수만 사용 
class Solution {
    static int N;
    public String solution(int n, int t, int m, int p) {
        N = n;
        StringBuilder sb = new StringBuilder();
        int cnt = 0;
        int turn = 1; // 차례
        int num = 0;
        while(cnt < t){ // 튜브가 말해야 하는 숫자 t개 구하기 
            String result = change(num++);
            for(int i = 0; i < result.length(); i++){
                if(turn == p){
                    sb.append(result.charAt(i));
                    cnt++;
                    if(cnt == t) break;
                }
                turn++;
                if(turn == m + 1) turn = 1;
            }
        }
        return sb.toString();
    }
    public String change(int num){
        StringBuilder sb = new StringBuilder();
        while(num >= N){
           int cur = num % N;
           if(cur >= 10){
               if(cur == 10) sb.append('A');
               else if(cur == 11) sb.append('B');
               else if(cur == 12) sb.append('C');
               else if(cur == 13) sb.append('D');
               else if(cur == 14) sb.append('E');
               else sb.append('F');
           } 
           else sb.append(cur);
           num /= N; // 나누기 
        }
        if(num >= 10){
           if(num == 10) sb.append('A');
           else if(num == 11) sb.append('B');
           else if(num == 12) sb.append('C');
           else if(num == 13) sb.append('D');
           else if(num == 14) sb.append('E');
           else sb.append('F');
        }
        else sb.append(num);
        
        return sb.reverse().toString();
    }
}

 

change() 메서드를 활용해서 10진수 → N 진법 변환 

나머지는 FOR문을 돌면서 튜브 차례면 튜브가 말할 숫자들을 StringBuilder에 추가 

출력 끝!