728x90
▶ BufferedReader를 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
입력 & 출력
나의 풀이
이번 문제는 입력된 16진수를 10진수로 바꾸는 아주 간단한 문제입니다.
물론 parseInt() 메서드를 사용하여 간단하게 풀이할 수 있지만, 위와 같이 진법 변환을 직접 해보았습니다.
먼저 빠른 입력을 위해 BufferedReader 클래스로 입력을 받아주고, toCharArray() 메서드를 통해서 char타입 배열에 담아줍니다.
그리고 위 "진법 변환 그림"에서 볼 수 있듯이 "1398 FBA"면 A부터 접근을 해줍니다. 즉 뒤에서부터 순회를 합니다.
그리고 이제 char을 숫자로 변환해야 합니다.
각 문자 요소별로 A ~ Z의 문자라면 16진수에서는 A = 10 이기 때문에 55를 빼주거나 'A'를 해줘야 합니다.
A ~ Z의 요소가 아니라면 숫자가 그대로 나와야 하기 때문에 48을 빼주거나 '0'을 빼줘서 숫자로 변환해 줍니다.
그리고 뒤에서부터 순회하기 때문에 지수를 컨트롤할 수 있는 idx를 증감연산자를 사용하여 접근하여 숫자와 자릿수를 곱해줍니다.
진법을 변환하는 방법을 안다면 쉽게 풀 수 있는 문제였습니다.
다른 풀이 : parseInt() ✅
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.next();
System.out.println(Integer.parseInt(input,16));
in.close();
}
}
parseInt() 메서드를 활용하면 더욱 간단히 풀 수 있습니다.
두 번째 인자로 원하는 진법을 넣으면 8진수, 16진수, 2진수 등 간단하게 변환할 수 있습니다.
생략하면 10진수로 변환합니다.
참고 ❗
'Coding Test > 백준' 카테고리의 다른 글
[백준] Hashing (BufferedReader, 모듈러 연산, 15829번, toCharArray(), Java) (1) | 2024.06.02 |
---|---|
[백준] 수학은 비대면강의입니다 (BufferedReader, 브루트 포스, 19532번, Java) (0) | 2024.06.02 |
[백준] 저작권 (BufferedReader, StringTokenizer, 2914번, Java) (0) | 2024.06.01 |
[백준] 시험 감독 (BufferedReader, StringTokenizer, 그리디 알고리즘, 13458번, Java) (0) | 2024.05.31 |
[백준] 세탁소 사장 동혁 (BufferedReader, 그리디 알고리즘, 2720번, Java) (0) | 2024.05.31 |