PS/BOJ

[백준 BOJ] 1550 16진수

Jubil 2021. 2. 23. 20:44
반응형

링크

www.acmicpc.net/problem/1550

 

1550번: 16진수

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

www.acmicpc.net

풀이

16진수를 받아서 10진수로 변환 후 출력하는 문제다.

 

처음에 string으로 입력받아서 뒷자리부터 16^0, 16^1, 16^2, 16^3...를 곱하면서 result에 더해주면 해결할 수 있다.

'0'~'9'까지는 s[i] - '0'으로 계산하고, 'A'~'F'까지는 s[i] - 'A' + 10으로 계산하면 된다.

 

코드

//1550_16진수
#include <iostream>
#include <string>
using namespace std;

string s;
int result, tmp = 1;

int main() {
	cin >> s;

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

		tmp *= 16;
	}

	cout << result << endl;

	return 0;
}

반응형

'PS > BOJ' 카테고리의 다른 글

[백준 BOJ] 2475 검증수  (0) 2021.02.23
[백준 BOJ][Python] 2338 긴자리 계산  (0) 2021.02.23
[백준 BOJ][Python] 1271 엄청난 부자2  (0) 2021.02.23
[백준 BOJ][DP] 2133 타일 채우기  (0) 2021.02.18
[백준 BOJ] 14681 사분면 고르기  (0) 2021.02.18