[python] 백준 11816번: 8진수, 10진수, 16진수
Algorithm/Python

[python] 백준 11816번: 8진수, 10진수, 16진수

11816번: 8진수, 10진수, 16진수 (acmicpc.net)

 

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

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

www.acmicpc.net

접근 방법

혹시 파이썬으로 진법 변환을 해주는 내장 함수가 있는지 먼저 구글링 해보니, int() 내장 함수가 생각보다 강력한 기능을 가지고 있었다. 이를 활용하면 바로 풀 푸 있겠다고 판단했다.

 

일단, 문제에서

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

라고 정의했기 때문에 초기 입력값을 배열에 한 문자 단위로 잘라 넣어서 첫 번째, 두 번째 원소를 if문으로 검증하여 몇 진수 숫자인지 판단 후int() 함수로 진법 변환했다.

 

풀이 코드

X = str(input())

# 입력값을 한 문자 단위로 잘라서 리스트에 저장
arr = list(map(str, str(X)))

# 리스트 첫 번째와 두 번째 원소가 0x라면 16진수로 판단하여 10진수로 변환 후 출력
if arr[0] == '0' and arr[1] == 'x':
  print(int(X, 16))

# 리스트 첫 번째 원소에 0이 있다면 8진수로 판단하여 10진수로 변환 후 출력
elif arr[0] == '0':
  print(int(X, 8))

# 16진수, 8진수 모두 아니라면 10진수이므로 바로 출력
else:
  print(int(X))

 

'Algorithm > Python' 카테고리의 다른 글

[python] 백준 11720: 숫자의 합  (0) 2022.01.22
[python] 백준 11653: 소인수분해  (0) 2022.01.20