Problem Solving
[프로그래머스] n진수 게임 (Java)
흑개1
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'에 매칭하는 식으로 했다.