Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Life Engineering

[프로그래머스] n진수 게임 (Java) 본문

Problem Solving

[프로그래머스] n진수 게임 (Java)

흑개 2022. 3. 15. 21:26

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

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

class Solution {
    static char[] digits={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    public String solution(int n, int t, int m, int p) {
        StringBuilder sb=new StringBuilder("");
        StringBuilder answer=new StringBuilder("");
        sb.append('0');
        int num=1;
        while (sb.length()<m*t){
            sb.append(change(num,n));     //문자열 형태로
            num++;
        }
        int idx=p-1;
        for (int i=0; i<t; i++){
            answer.append(sb.charAt(idx));
            idx+=m;
        }
        return answer.toString();
    }
    public StringBuilder change(int num, int n){
        StringBuilder temp=new StringBuilder("");
        while (num>0){
            temp.append(digits[num%n]);
            num/=n;
        }
        return temp.reverse();
    }
}

m*t 개만큼 문자열을 쭉 만들어서, p번째, m+p번째, m+m+p 번째 .. 이렇게 쭉 뽑아주면 된다.

진법 변환은 digits 배열을 이용해서, 나머지가 10나왔을 경우 10 인덱스를 찾아가 'A'에 매칭하는 식으로 했다.