728x90
안녕하세요
'N진수 게임' 문제는 참가자들이 순차적으로 숫자를 말하며 , 10진수가 아닌 주어진 N진수로 변환 합니다. 문제에서 요구하는 답은 특정 참가자가 말하는 숫자를 미리 계산하는 것 입니다.
class Solution {
public String solution(int n, int t, int m, int p) {
String temp = conversion(t * m, n);
StringBuilder sb = new StringBuilder();
for (int i = 0, j = 1; i < temp.length(); i++) {
if (t == sb.length()) {
break;
}
if (p == j) {
sb.append(temp.charAt(i));
}
j++;
if (j > m) {
j -= m;
}
}
return sb.toString().toUpperCase();
}
public static String conversion(int number, int N) {
StringBuilder sb = new StringBuilder();
sb.append(0);
StringBuilder resultSb = new StringBuilder();
for (int i = 0; i <= number; i++) {
int current = i;
while (current > 0) {
if (current % N < 10) {
sb.append(current % N);
} else {
sb.append((char) (current % N - 10 + 'A'));
}
current /= N;
}
resultSb.append(sb.reverse().toString());
sb = new StringBuilder();
}
return resultSb.toString();
}
}
- 진법 변환 로직: 'conversion' 함수는 주어진 숫자를 N진법으로 변환합니다. 숫자가 10 이상일 경우 알파벳 문자를 치환 합니다
- 숫자 추출 : 'm' 과 튜브의 순서 'p'에 따라, 튜브가 말해야하는 숫자만을 순차적으로 추출합니다.
- 문자열 처리 : 추출된 숫자들을 이어 붙여 최종 문자열을 형성합니다
시간 복잡도 : O(nm), 여기서 n은 구해야 하는 숫자의 개수 , m은 참가자의 수 입니다. 각 숫자의 변환과 추출 과정에서 반복문이 중첩되어 사용됩니다.
공간 복잡도 : O(nm) , 변환 된 숫자들을 저장하기 위한 공간이 필요합니다.
728x90
'프로그래머스 문제' 카테고리의 다른 글
[JAVA/프로그래머스] 3진법 뒤집기 (0) | 2024.01.29 |
---|---|
[JAVA/프로그래머스] 문자열 내 마음대로 정렬하기 (2) | 2024.01.26 |
[JAVA/프로그래머스] 할인 행사 (0) | 2024.01.25 |
[JAVA/프로그래머스] 합승 택시 요금 (1) | 2024.01.25 |
[JAVA/프로그래머스] 영어 끝말잇기 (1) | 2024.01.24 |