본문 바로가기
Algorithm

[BAEKJOON_1550] 16진수(Python)

by ZZANG BAE 2022. 8. 2.

*출처

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

 

1550번: 16진수

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

www.acmicpc.net

[문제]

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

[입력]

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

[출력]

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

[예제입력]

A

[예제출력]

10

[전략]

  1. 진수 변환을 위해선 각 자릿수에 16을 곱하여 더해야 한다. for문을 이용해서 각 자릿수의 숫자를 파악하고자 한다.
  2. enumerate()함수를 통해 각 자릿수의 숫자와 16^n을 표현하기 위한 index 값을 받는다.
  3. 맨 앞 자릿수의 숫자 부터 파악하며, 이 때 if-elif 문을 통해 A-F일 때의 값을 숫자로 받을 수 있도록한다.(ex.A-10)
  4. 각 자릿수의 가중치를 인덱스 값을 이용해 표현한다
    • N이 인풋값, i가 index 값일 때, 16**(len(N)-(i+1))을 이용.

[코드]

[공부한 점]

  1. enumerate()함수를 통해 iterable한 변수의 인덱스 값과 그 인덱스에서의 값을 한 번에 이용하는 연습을 해보았다.
    훨씬 간결해질 수 있음을 확인하였다.
  2. elif문을 통해서 다양한 경우에 대응할 수 있었다.
  3. 문자열이 주어졌을 때, for문을 통해 iterable한 값을 하나씩 빼내면서 그 값을 가공하는 방법을 알았다.
    -> '숫자'의 경우 int()함수를 이용해 정수로서 활용

'Algorithm' 카테고리의 다른 글

[BAEKJOON 1110] 더하기 사이클  (0) 2022.08.04
[BAEKJOON_1032] 명령 프롬프트(Python)  (0) 2022.08.03
[BAEKJOON_2061] 좋은 암호  (0) 2022.08.01
[BAEKJOON_1076] 저항(Python)  (0) 2022.07.31
[BAEKJOON_1009] 분산 처리(Python)  (0) 2022.07.30