1550번: 16진수

문제 풀러가기

1550

코드

import java.util.*;

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

설명

2가지 방법이 있다.

한 가지는 위에서 사용한 Integer.parseInt를 사용하는 것이다.

다른 한 가지는 16진수의 규칙에 맞춰서 각 자리 수를 변환하여 10진수를 구하는 방법이다.

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int[] mul = new int[7];

        mul[0] = 1;
        for (int i = 1; i < 7; i++) {
            mul[i] = mul[i - 1] * 16;
        }

        String input = br.readLine().trim();
        long sum = 0l;
        for (int i = input.length() - 1; i >= 0; i--) {
            sum += getTen(input.charAt(i)) * mul[input.length() - (1 + i)];
        }

        System.out.println(sum);
    }

    public static long getTen(char a) {
        if (a >= 65 && a <= 70) {
            return a - 55;
        }

        return a - 48;
    }
}