https://school.programmers.co.kr/learn/courses/30/lessons/17687
코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [3차] n진수 게임
난이도: LEVEL2
알고리즘 유형: 구현
정답 코드
// 2 ~ 16 진수 중에 알파벳 사용은 16진수만 사용
class Solution {
static int N;
public String solution(int n, int t, int m, int p) {
N = n;
StringBuilder sb = new StringBuilder();
int cnt = 0;
int turn = 1; // 차례
int num = 0;
while(cnt < t){ // 튜브가 말해야 하는 숫자 t개 구하기
String result = change(num++);
for(int i = 0; i < result.length(); i++){
if(turn == p){
sb.append(result.charAt(i));
cnt++;
if(cnt == t) break;
}
turn++;
if(turn == m + 1) turn = 1;
}
}
return sb.toString();
}
public String change(int num){
StringBuilder sb = new StringBuilder();
while(num >= N){
int cur = num % N;
if(cur >= 10){
if(cur == 10) sb.append('A');
else if(cur == 11) sb.append('B');
else if(cur == 12) sb.append('C');
else if(cur == 13) sb.append('D');
else if(cur == 14) sb.append('E');
else sb.append('F');
}
else sb.append(cur);
num /= N; // 나누기
}
if(num >= 10){
if(num == 10) sb.append('A');
else if(num == 11) sb.append('B');
else if(num == 12) sb.append('C');
else if(num == 13) sb.append('D');
else if(num == 14) sb.append('E');
else sb.append('F');
}
else sb.append(num);
return sb.reverse().toString();
}
}
change() 메서드를 활용해서 10진수 → N 진법 변환
나머지는 FOR문을 돌면서 튜브 차례면 튜브가 말할 숫자들을 StringBuilder에 추가
출력 끝!
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL3 합승 택시 요금 (0) | 2024.09.29 |
---|---|
[JAVA] 프로그래머스 LEVEL2 수식 최대화 (0) | 2024.09.29 |
[JAVA] 프로그래머스 LEVEL2 삼각 달팽이 (1) | 2024.09.28 |
[JAVA] 프로그래머스 LEVEL2 택배상자 (0) | 2024.09.28 |
[JAVA] 프로그래머스 LEVEL2 테이블 해시 함수 (1) | 2024.09.28 |