PS(Problem Solving)/백준(BOJ)

[1550번][C/C++] 16진수

seongmik 2023. 2. 3. 21:07
728x90
반응형

https://www.acmicpc.net/problem/1550

 

1550번: 16진수

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

www.acmicpc.net

16진수 수가 입력으로 들어오면 10진수로 변환해서 출력하는 문제이다.

 

16진수의 크기가 작아서 무식하게 구현했다.

16진수를 문자로 받은 다음에 0~F를 0~16으로 바꿔주고 각 수에 자리수만큼 16을 곱해주며 다 더해주면 답이다.

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstring>

using namespace std;

char str[7];
int len, ans, ret, cnt;

int main() {
    scanf("%s", str);
    len = strlen(str);

    for(int i=len-1;i>=0;i--) {
        if('0' <= str[i] && str[i] <= '9') {
            ret = str[i] - '0';
        }
        else {
            ret = 10 + str[i] - 'A';
        }

        for(int j=0;j<cnt;j++) {
            ret *= 16;
        }
        cnt++;
        ans += ret;
    }

    printf("%d", ans);

    return 0;
}
728x90
반응형

'PS(Problem Solving) > 백준(BOJ)' 카테고리의 다른 글

[C/C++] 26495번 - Big Number  (0) 2024.03.31
[1958번][C/C++] LCS 3  (0) 2023.06.27
[2239번][C/C++] 스도쿠  (1) 2023.02.02
[1038번][C/C++] 감소하는 수  (0) 2023.02.01
[2342번][C/C++] Dance Dance Revolution  (0) 2023.01.31