본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1550 16진수

by 까망 하르방 2021. 9. 14.
반응형

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

Approach

16진수를 받아서 10진수로 출력하는 문제로

서식 지정자를 이용하면 쉽게 풀 수 있다

 

▶ [C] printf 서식  

 

[C] printf 서식

%d     int 부호 있는 10진수 정수 %u     unsigned int 부호 없는 10진수 정수 %o     unsigned int 부호 없는 8진수 정수 %x, %X      unsigned int 부호 없는 16진수 정수 %f     float,..

zoosso.tistory.com

 

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진수 인덱스에 따라 거듭제곱 수치 반영

문자 처리를 위해서 아스키 코드를 이용할 수 있다.

 

▶ 아스키(Ascii) 코드 활용  

 

아스키(Ascii) 코드 활용

아스키(Ascii) 코드 활용 프로그래밍 문제를 풀 때(PS)는 0 ~ 9 숫자를 문자로 표현하는 경우도 있고, 반대로 "A ~ Z" 혹은 "a ~ z" 문자를 정수형으로 이용하는 경우가 있다. 이때 이용하는 것이 아스키(

zoosso.tistory.com

1 ~ 9A ~ 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

댓글