이번에 풀어본 문제는
프로그래머스 n진수 게임 입니다.
import java.util.*;
class Solution {
static int MAX_LEN;
public String solution(int n, int t, int m, int p) {
String answer = "";
MAX_LEN = t * m;
List<Character> map = new ArrayList<>();
int start = 0;
while (map.size() < MAX_LEN) {
String next = Integer.toString(start, n);
int nextSize = next.length();
for (int i = 0; i < nextSize; i++) {
map.add(next.charAt(i));
}
start++;
}
int idx = p - 1;
for (int i = 0; i < t; i++) {
answer += map.get(idx);
idx += m;
}
return answer.toUpperCase();
}
}
n진수로 변환된 숫자를 m명의 인원이 번갈아가며 한 글자씩 외치는 게임입니다.
범위는 어림잡아 t * m 정도로 잡았습니다.
0부터 증가하면서 MAX_LEN 보다 커질 때 까지 map을 채워줍니다.
이제 값 세팅이 끝났으므로, 순서에 맞는 인덱스만 골라서 answer을 완성시켜주면 해결할 수 있습니다.
문제만 이해하면 풀만한 문제였던 것 같습니다!