[3차 n진수 게임]
https://programmers.co.kr/learn/courses/30/lessons/17687
* 로직
- 0~t*m까지의 숫자를 n진수화 시킨다
- 진수화된 문자를 첫 글자부터 탐색한다
- 만약 (i+1)%m == (p%m) 이라면 (즉, p번째 순서가 도달하면) -> 해당 글자를 답에 넣어준다(result)
- 만약 result의 길이가 t개 이상이 된다면 -> 종료시킨다
class Solution {
public String solution(int n, int t, int m, int p) {
String answer = "";
StringBuilder sb = new StringBuilder();
for(int num=0; num<=t*m; ++num) {
// 해당 숫자를 n진수로 변경
StringBuilder tmp = convertNum(num, n);
sb.append(tmp);
}
StringBuilder result = new StringBuilder();
for(int i=0; i<sb.length(); ++i) {
if(result.length() >= t) break;
if(((i+1) % m) == (p%m)) {
result.append(sb.charAt(i));
}
}
answer = result.toString();
return answer;
}
private static StringBuilder convertNum(int num, int n) {
StringBuilder sb = new StringBuilder();
if(num == 0) return sb.append(0);
while (num != 0) {
int mod = num % n;
if(mod >= 10) {
int idx = 'A' + (mod-10);
sb.append((char) idx);
}
else sb.append(mod);
num /= n;
}
// 진수화시켰기 때문에 거꾸로 출력
return sb.reverse();
}
}
'Algorithm > Problem_프로그래머스' 카테고리의 다른 글
프로그래머스(나누어 떨어지는 숫자 배열) - Java (0) | 2020.05.20 |
---|---|
프로그래머스([3차] 파일명 정렬) - Java (0) | 2020.05.18 |
프로그래머스(캐시, 압축) - Java (1) | 2020.05.14 |
프로그래머스([1차] 프렌즈 4블록) - Java (0) | 2020.05.12 |
프로그래머스(실패율) - Java (0) | 2020.05.11 |