Life Engineering
[프로그래머스] n진수 게임 (Java) 본문
https://programmers.co.kr/learn/courses/30/lessons/17687
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'에 매칭하는 식으로 했다.
'Problem Solving' 카테고리의 다른 글
[BOJ 9935] 문자열 폭발 (Java) (0) | 2022.03.16 |
---|---|
[프로그래머스] 경주로 건설 (Java) (0) | 2022.03.16 |
[BOJ 17142] 연구소3 (Java) (0) | 2022.03.15 |
[프로그래머스] 등굣길 (Java) (0) | 2022.03.13 |
[BOJ 17136] 색종이 붙이기 (Java) (0) | 2022.03.10 |