
난이도: ★★★☆☆ • solved on: 2025-07-05

자료구조
알고리즘/기법
핵심 키워드
- 문제 분해
- Java의
Integer.toString(int, int)메서드로 바로 진법 변환 가능- 대문자 출력을 위해
.toUpperCase()사용- 핵심 로직 흐름
입력 → Integer.toString(N, B) → 대문자 변환 → 출력- 예외 처리
- 없음 (내장 함수가 범위 처리)
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int target = Integer.parseInt(arr[0]);
int n = Integer.parseInt(arr[1]);
System.out.print(Integer.toString(target, n).toUpperCase());
}
}
- 문제 분해
- 몫이 0이 될 때까지 N을 B로 나눈 나머지를 차례로 저장
- 10~35는 알파벳(A~Z)로 매핑
- 마지막에 역순 출력
- 핵심 로직 흐름
while (N > 0) { 나머지 = N % B; 결과.append(문자로 변환(나머지)); N = N / B; } 결과를 뒤집어서 출력- 예외 처리
- N=0일 때는 "0" 출력
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int N = Integer.parseInt(arr[0]);
int B = Integer.parseInt(arr[1]);
if (N == 0) {
System.out.print("0");
return;
}
StringBuilder sb = new StringBuilder();
while (N > 0) {
int rem = N % B;
if (rem < 10) sb.append((char) (rem + '0'));
else sb.append((char) (rem - 10 + 'A'));
N /= B;
}
System.out.print(sb.reverse().toString());
}
}
방법 1
- 시간 복잡도: O(log₍B₎N) (내장 함수)
- 공간 복잡도: O(1) (출력 문자열 제외)
방법 2
- 시간 복잡도: O(log₍B₎N)
- 공간 복잡도: O(log₍B₎N) (StringBuilder)
비슷한 유형 (GPT 추천) :
확장 문제 (GPT 추천) :