Algorithm

[Java] 백준 1550번 16진수

로춘남 2021. 10. 27. 15:46
728x90


입력한 값(16진수)을 10진수로 변환해 출력하는 문제이다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        int b = Integer.parseInt(a, 16);
        System.out.println(b);
        sc.close();
        }
     }

입출력이기 때문에 간단하게 Scanner를 사용해보았다. 선언까지는 괜찮은데 16진수를 10진수로 변환하는 코드를 몰랐기때문에 검색을 통해 알아내었다. Integer.parseInt(a, 16) 으로 해결 가능..

Integer.parseInt()는 자바 내장 함수로서 2진수, 8진수, 16진수를 10진수로 변환 할때 사용 해줄 수 있다. parseInt는 String Type을 Int Type로 변환시켜주는 역할을 담당하며, 

Integer.parseInt(String Type, n진수)의 형태로 사용된다. return값은 당연히 int로 적용되게 된다.

 

이전에 말했던것처럼 입출력 관련은 Buffer가 장땡이기 때문에 Buffer도 한 번 사용해보기로 한다.

 

2. BufferedReader 사용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int A = Integer.parseInt(br.readLine(), 16);
        System.out.println(A);
    }
}

Buffered를 선언하였고, Int A를 통해 (Integer.parseInt(br.readLine(), 16)을 통하여 16진수를 10진수로 변환을 진행해주었다.

 

A를 입력했으면 정상적으로 10이 출력될 것이다.

 

그럼 Scanner와 Buffered의 속도 차이를 봐볼까?

Scanner를 사용했을 경우

메모리: 17580KB / 시간 : 208ms

 

Buffered를 사용했을 경우

메모리: 14152KB / 시간 : 124ms

 

메모리와 속도의 차이가 나는것을 확인 할 수가 있다.

728x90

'Algorithm' 카테고리의 다른 글

[백준] 1001번 : A-B  (0) 2021.10.28
[Java] 백준 2338번 긴자리 계산  (0) 2021.10.27
[Java] 백준 1271번 엄청난 부자2  (0) 2021.10.25
[Java] 백준 1330번 두 수 비교하기  (0) 2021.10.22
[백준] 1000번: A+B  (0) 2021.10.02