[BOJ] 백준 1550 - 16진수

Lynn·2021년 1월 22일
0

Algorithm

목록 보기
18/43
post-thumbnail

👩🏻‍💻 문제

👩🏻‍💻 정답 코드

import java.io.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        int len = s.length();
        int bin = 0;
        if(s.equals("0") && len == 1) System.out.println(0);
        else {
            for(int i = 0; i < len; i++){
                bin += (change(s.charAt(i)) * Math.pow(16, len-i-1));
            }
        }
        System.out.println(bin);
        br.close();
    }
    public static int change(char a){
        int result;
        switch(a){
            case 'A': result=10; break;
            case 'B': result=11; break;
            case 'C': result=12; break;
            case 'D': result=13; break;
            case 'E': result=14; break;
            case 'F': result=15; break;
            default: result = a-'0';
        }
        return result;
    }
}

16진수를 10진수로 변환하는 문제인데,
10진수 123이 1(10^2) + 2(10^1) + 3*(10^0)인 것처럼
16진수도 똑같이 16을 단위로 연산해 주면 된다.
A~F는 각 10~15랑 매칭되므로 그건 case로 나눠 줬고, 나머지 0~9는 char를 int로 변환해 줬다. 그렇게 문자열 s를 앞에서부터 한 자리씩 change 메소드로 변환하고 for문에서 bin에 계산값을 더해나갔다.

profile
wanderlust

0개의 댓글

관련 채용 정보