https://www.acmicpc.net/problem/11005
코드 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
char[] arr = new char[36];
if(N == 0){
sb.append(0);
}
for (int i= 0; i< 10; i++){
arr[i] = (Character.forDigit(i,10));
}
for (int i = 10; i <= 35; i++) {
arr[i] = (char)('A'+(i-10)); //index 10 = 'A', 11 = 'B'... 35 = 'Z'
}
while(N != 0){
sb.append(arr[N % B]);
N/=B;
}
System.out.println(sb.reverse());
}
}
수정, 속도는 조금 느려짐
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
char[] arr = new char[36];
if(N == 0){
sb.append(0);
}
while(N != 0){
if(N % B < 10){
sb.append(N%B);
}
if(N % B >= 10){
sb.append((char)('A' + (N % B) - 10));
}
N/=B;
}
System.out.println(sb.reverse());
}
}
참고:
char 과 int 변환 시 '0'을 더하거나 빼는 점, StringBuilder에 reverse()가 있다는 점을 알게 되었다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 17103번 - 골드바흐 파티션 (Java 8) (0) | 2022.03.19 |
---|---|
백준 2089번 - -2진수 (Java 8) (0) | 2022.03.19 |
백준 1212번 - 8진수 2진수 (Java 8) (0) | 2022.03.17 |
백준 1373번 - 2진수 8진수 (Java 8) (0) | 2022.03.16 |
백준 17087번 - 숨바꼭질 6 (Java 8) (0) | 2022.03.16 |
댓글