하찮은 19학번 컴공대생
yoonbot's devlog

백준 오답노트 (BOJ) 🚩/브론즈 (Bronze) 🥉

< BOJ - Bronze V > 1550 : 16진수

yoonbot_code 2021. 12. 8. 01:37

 

 

1550번: 16진수

첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다.

www.acmicpc.net

 

요약: 16진수 캐릭터를 입력 받고 이진수 값을 출력하라. 

 

내가 틀린 점: 입력을 받을시 string() 값으로 받았지만 0~9일시 - '0' 를 뺴는 걸 생각 못 했고 입력이 A~F일시 - 'A' 를 뺴는 걸 생각 못 함. 

 

모범 답안:

#include <iostream>
#include <string>
using namespace std;

int main(){
    int temp = 1, result = 0; 
    string input;
    cin >> input;

    for (int i = input.length() - 1; i >= 0; i--){
        if (input[i] >= '0' && input[i] <= '9')
            result += (input[i] - '0') * temp;
        else 
            result += (input[i] - 'A' + 10) * temp;
        temp *= 16;
    }

    cout << result << endl;
    return 0;

}