class Solution {
public String solution(int n, int t, int m, int p) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < m * t; i ++){
sb.append(binaryConversion(i, n));
}
StringBuilder answer = new StringBuilder();
int start = p - 1;
for(int i = 0; i < sb.length(); i ++){
answer.append(sb.charAt(start));
if(answer.length() == t) break;
start += m;
}
return answer.toString();
}
private String binaryConversion(int i, int n) {
String num = "";
num = Integer.toString(i, n);
return num.toUpperCase();
}
}
풀이 방법
1. m(게임에 참가하는 인원) * t(미리 구할 숫자의 갯수) 넉넉하게 잡아준다. (최대 10만)
(헷갈렸는데 10진법으로 생각해서 넉넉하게 잡아 주는 것이다.
4개의 숫자를 구해야 하는데 인원이 4명이면 10진수 16까지는 구해줘야 최소 4개의 숫자를 부를 수 있는 것이기 때문
이라고 생각을 했다.
2. 진법에 맞게 변환해서 StringBuilder에 붙인다.
3. 그리고 시작점을 0부터 시작이니깐 p - 1 한 값을 start로 지정한다.
4. 정답의 크기가 t와 같다면 나가고 아니면 start 에 인원수(m)을 더해준다.
'자료구조 & 알고리즘 관련 > 코딩테스트' 카테고리의 다른 글
스킬트리 (0) | 2023.01.03 |
---|---|
귤 고르기 (0) | 2023.01.02 |
최대공약수 최소공배수 (0) | 2022.12.24 |
Probing (0) | 2022.12.22 |
스도쿠 보드 (0) | 2022.12.20 |