*출처
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
[전략]
- 진수 변환을 위해선 각 자릿수에 16을 곱하여 더해야 한다. for문을 이용해서 각 자릿수의 숫자를 파악하고자 한다.
- enumerate()함수를 통해 각 자릿수의 숫자와 16^n을 표현하기 위한 index 값을 받는다.
- 맨 앞 자릿수의 숫자 부터 파악하며, 이 때 if-elif 문을 통해 A-F일 때의 값을 숫자로 받을 수 있도록한다.(ex.A-10)
- 각 자릿수의 가중치를 인덱스 값을 이용해 표현한다
- N이 인풋값, i가 index 값일 때, 16**(len(N)-(i+1))을 이용.
[코드]
[공부한 점]
- enumerate()함수를 통해 iterable한 변수의 인덱스 값과 그 인덱스에서의 값을 한 번에 이용하는 연습을 해보았다.
훨씬 간결해질 수 있음을 확인하였다. - elif문을 통해서 다양한 경우에 대응할 수 있었다.
- 문자열이 주어졌을 때, 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 |