반응형
출처: https://www.acmicpc.net/problem/1550
Approach
16진수를 받아서 10진수로 출력하는 문제로
서식 지정자를 이용하면 쉽게 풀 수 있다
C++
#include <iostream>
using namespace std;
int word;
int main(void)
{
// freopen("input.txt", "r", stdin);
scanf("%X", &word); // 대문자 16진수 입력 받기
printf("%d", word); // 10진수 출력
}
다른 방법으로는 16진수를 10진수로 표기되도록 직접 계산해주는 것이다.
→ 16진수 인덱스에 따라 거듭제곱 수치 반영
문자 처리를 위해서 아스키 코드를 이용할 수 있다.
「1 ~ 9」 와 「A ~ F」 까지 구간이 연속되지 않으므로 유의
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int ans, val, shift;
int main(void)
{
// freopen("input.txt", "r", stdin);
string word;
cin >> word;
for (int i = word.length() - 1; i >= 0; --i)
{
if (word[i] >= 65) // A ~ F
{
val = (word[i] - 'A' + 10);
}
else // 1 ~ 9
{
val = (word[i] - '1' + 1);
}
val *= pow(16, word.length() - 1 - i);
ans += val;
shift++;
}
printf("%d\n", ans);
}
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int j = 0;
int sum = 0;
for (int i = str.length()-1; i >= 0; i--) {
int x = str.charAt(i)-48;
if(x > 9)
x = x-7;
sum = (int) (sum + (x*Math.pow(16, j++)));
}
System.out.println(sum);
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1924 2007년 (0) | 2021.09.17 |
---|---|
[BOJ] 백준 1568 새 (0) | 2021.09.15 |
[BOJ] 백준 1316 그룹 단어 체커 (0) | 2021.09.13 |
[BOJ] 백준 1292 쉽게 푸는 문제 (0) | 2021.09.03 |
[BOJ] 백준 1157 단어 공부 (0) | 2021.08.31 |
댓글