관리 메뉴

솜씨좋은장씨

[BaekJoon] 11816번 : 8진수, 10진수, 16진수 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 11816번 : 8진수, 10진수, 16진수 (Python)

솜씨좋은장씨 2021. 8. 31. 00:10
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 8진수, 10진수, 16진수 입니다.

백준의 8진수, 10진수, 16진수 문제를 파이썬으로 풀이하였습니다.

 

11816번: 8진수, 10진수, 16진수

첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다.

www.acmicpc.net

👨🏻‍💻 문제 풀이

8진수, 10진수, 16진수 문제 이름 그대로 8진수, 10진수, 16진수가 들어오면

이를 모두 10진수로 바꾸어 출력하는 문제입니다.

 

그럼 입력받은 수가 8진수인지 10진수인지 16진수인지 판단은 어떻게 하느냐

문제에 힌트가 있습니다.

8진수인 경우에는 수의 앞에 0이 주어지고, 16진수인 경우에는 0x가 주어진다.
8진수의 경우 - 수의 앞에 0
16진수의 경우 - 수의 앞에 0x

이를 활용하여 입력 받은 수가 몇진수인지를 파악합니다.

문자열 슬라이싱을 활용하여

 

문자열[:2] 의 값이 0x이면 16진수

문자열[:1] 의 값이 0 이면 8진수

 

로 보고 계산합니다.

 

자 그럼 16진수 8진수를 어떻게 10진수로 바꾸느냐!

int(숫자, 진수)

파이썬에서는 int 를 통해서 8진수 16진수를 10진수로 바꿀 수 있습니다.

8진수는

int(숫자, 8)

16진수는

int(숫자, 16)

위의 방법으로 10진수로 변환이 가능합니다.

 

전체 코드는 아래를 참고해주세요!

👨🏻‍💻 코드 ( Solution )

def convert_to_decimal(num_string):
    if num_string[:2] == "0x":
        answer = int(num_string, 16)
    elif num_string[:1] == "0":
        answer = int(num_string, 8)
    else:
        answer = int(num_string)
    return answer

if __name__ == "__main__":
    num_string = input()
    print(convert_to_decimal(num_string))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments