[Python] 백준알고리즘 #1550

r1verfuture·2022년 1월 31일
0

백준알고리즘

목록 보기
107/110

📝 문제

16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오.

⌨️ 입력

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

🖨 출력

첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다.

⌨️ 예제 입력

A

🖨 예제 출력

10

📚 내가 제출한 코드 1

import sys
num = list(map(ord, sys.stdin.readline().rstrip()))
num.reverse()
result = 0
for i in range(len(num)):
    if num[i] < 58:
        result += (num[i] - 48) * (16 ** i)
    else:
        result += (num[i] - 55) * (16 ** i)
print(result)

✏️ 내가 제출한 코드 1에 대한 설명

  • ASCII 코드 (0~9는 48~57, A~F는 65~70) 로 각 숫자들을 변환한 후 0~F를 0~15로 매칭해주는 방식이다.
  • ord() : ASCII 코드를 반환하는 함수
  • sys.stdin.readline() : 키보드로 입력한 값을 받는 함수 (기존의 input() 보다 속도가 훨씬 빠르다.)
  • sys.stdin.readline().rstrip() : 기존의 input() 이랑 다르게 sys.stdin.readline() 은 개행 문자까지 입력으로 받기 때문에 개행 문자를 제거해주는 코드를 따로 써줘야 한다. 개행 문자 제거하는 함수가 rstrip() 이다.
  • map(a, b) : b의 원소 하나하나를 a에 대입한 것을 반환하는 함수
  • a.reverse() : a의 순서를 반대로 뒤집는 함수
  • len(a) : 리스트 a의 크기 (요소 개수)
  • range(a) : 0부터 a-1까지의 정수를 반환하는 함수
  • 메모리 : 30864 KB
  • 시간 : 76 ms
  • 코드 길이 : 245 B

📚 내가 제출한 코드 2

print(int(input(), 16))

✏️ 내가 제출한 코드 2에 대한 설명

  • 다른 풀이는 어떤 것이 있나 검색해보다가 이렇게 간단한 방법이 있을 줄은 꿈에도 몰랐다 😅 앞으로는 int()를 자주 애용해야겠다.
  • input() : 키보드로 입력한 값을 반환하는 함수
  • int(a, b) : 문자열인 a를 b진수로 변환해주는 함수
  • 메모리 : 30864 KB
  • 시간 : 68 ms
  • 코드 길이 : 23 B
profile
#iOS #Swift #Developer #Python

0개의 댓글