구현 자체는 쉬운 문제였지만, 문제 자체가 나에겐 어려운 문제였다.
진법 변환에 미숙한 나에게는 굉장히 어려웠다. 급하게 해당 진법 변환에 대해 공부한 뒤, 문제를 풀게 되었다.
시간제한과 메모리 제한은 신경 안 써도 된다고 판단했다.
내가 생각한 로직이다.
10진법이 문제.
만약 ZZZZZ라면, Z = 35, 아스키코드로는 90, 즉 -55
만약 0 ~ 9라면, 아스키 코드는 -48 or -'0'
해당 문제를 푸려면 아스키 코드와 진법에 대해 잘 알아야 되는 게 포인트다!
최종코드
import java.io.*;
import java.util.*;
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(), " ");
String n = st.nextToken();
int b = Integer.parseInt(st.nextToken());
int num = 0;
int sum = 0;
int count = 0;
for (int i = n.length()-1; i >= 0; i--) {
char ch = n.charAt(i);
if (ch >= '0' && ch <= '9')
num = ch - '0';
else
num = ch - 55;
sum += num * Math.pow(b, count++);
}
System.out.println(sum);
}
}
배운점
옛날에 진법 변환을 배우고 까먹어서 그런지 나에게는 조금 어려웠다. 이를 통해 진법변환에 대해. 알게 되었다!
또한 나는 항상 아스키코드를 외우지 않아서 관련 문제가 나올 때마다 코드표를 보고 하곤 하는데, 실제 문제에서는 볼 수 없으니 몇 개는 알아야 된다고 생각했다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 JAVA] 2501 - 약수 구하기 (0) | 2024.12.03 |
---|---|
[백준 JAVA] 5086 - 배수와 약수 (0) | 2024.12.02 |
[백준 JAVA] 2903 - 중앙 이동 알고리즘 (0) | 2024.11.30 |
[백준 JAVA] 2292 - 벌집 (2) | 2024.11.29 |
[백준 JAVA] 2869 - 달팽이는 올라가고 싶다 (0) | 2024.11.28 |