📝 문제
🔑 풀이 과정
· 예제1의 60466175를 36진법으로 바꾸는 과정
N을 B로 몫이 0일때까지 나눈다. 그리고 나눌때의 나머지들을 계산하는 순서의 역순으로 출력해주면 된다.
· 한가지 더 생각해야 할 점은, 10이상인 수는 알파벳으로 매칭해줘야 한다는 것! 10은 A로, 11은 B로.... 35는 Z로.
문자 'A'의 아스키코드 값은 65이므로 기존 숫자값 10보다 55가 크다는 것을 알 수 있다. 즉, char형 배열에 넣어줄 때 55를 더해서 넣어주면 된다.
그리고 10미만의 수도 마찬가지다. 문자 '0'은 48에 매칭된다. 그러므로 기존 숫자값에 48을 더해서 배열에 넣어주면 된다.
· 배열을 거꾸로 순회하면서 출력해주면 된다.
🔓 답안
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
ArrayList<Character> answer = new ArrayList<>();
while(N != 0){
int remainder = N % B;
if((0 <= remainder) && (remainder <= 9)){
answer.add((char) (remainder + 48));
}
else if((10 <= remainder) && (remainder <= 35)){
answer.add((char) (remainder + 55));
}
N = N / B;
}
//출력
for(int i = answer.size() - 1; i >= 0; i--){
bw.write(answer.get(i));
}
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 수학
- 구현
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 5339 - 콜센터 (0) | 2023.10.03 |
---|---|
[Baekjoon] 5596 - 시험 점수 (1) | 2023.10.02 |
[Baekjoon] 5338 - 마이크로소프트 로고 (0) | 2023.10.01 |
[Baekjoon] 2530 - 인공지능 시계 (0) | 2023.09.29 |
[Baekjoon] 10718 - We love kriii (0) | 2023.09.28 |
댓글