728x90
1. 문제
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
⭐문제요약
# B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하라.
2. 풀이
-10진법을 넘어가는 진법을 숫자로 표기를 못한다. A~Z를 딕셔너리에 담아준다.
-입력받은 값을 거꾸로 리스트에 담는다. ex) ABCDE -> ['E','D','C','B','A']
-리스트에 있는 값을 인덱스0부터 마지막 인덱스까지 차례로 꺼내서 10진법으로 변환해준다.
hex_dict = {chr(65+i):10+i for i in range(26)}
N, B = input().split()
input_num = list(N)[::-1]
B = int(B)
result = 0;
for i, elem in enumerate(input_num):
if elem.isdigit(): #elem이 숫자면
result += int(elem) * (B**i)
else:
result += hex_dict[elem] * (B**i)
print(result)
3. 새롭게 알게된 점
1) enumerate()
for 루프를 돌며, 그 요소의 인덱스와 값을 얻을 수 있다.
✔️enumerate() 미사용
example_list = ["apple", "banana", "cherry"]
for elem in example_list:
print(elem)
>>apple
>>banana
>>cherry
배열의 요소만 순차적으로 출력한다.
✔️enumerate() 사용
example_list = ["apple", "banana", "cherry"]
for elem in enumerate(example_list):
print(elem)
>>(0, 'apple')
>>(1, 'banana')
>>(2, 'cherry')
(인덱스, 요소) 형태의 튜플로 출력한다.
✔️ enumerate() 사용, 인자 unpacking
example_list = ["apple", "banana", "cherry"]
for index, elem in enumerate(example_list):
print(index, elem)
>>0 apple
>>1 banana
>>2 cherry
✔️ enumerate() 사용, 인자 unpacking, 인덱스 시작바꾸기
example_list = ["apple", "banana", "cherry"]
for index, elem in enumerate(example_list, start = 1) :
print(index,elem)
>>1 apple
>>2 banana
>>3 cherry
2) [::-1]로 리스트를 역순으로 만들 수 있다.
[start:stop:step] 은 파이썬의 슬라이싱 문법으로 각각 슬라이스의 시작 인덱스, 끝 인덱스, 그리고 증가량을 뜻한다.
[::-1]은 start와 stop 부분이 생략되어 있으므로,시작부터 끝까지를 의미한다.
step 부분에 -1이 지정되어 있어서, 리스트나 문자열을 뒤에서부터 앞으로 하나씩 읽는다.
728x90
'알고리즘&자료구조 > Algorithm' 카테고리의 다른 글
[백준 2292] 벌집 (1) | 2024.02.08 |
---|---|
[백준 2903] 중앙 이동 알고리즘 (0) | 2024.02.05 |
[백준 2566] 최댓값 (0) | 2024.02.05 |
[백준 2798] 블랙잭 (1) | 2024.02.01 |
[다익스트라 알고리즘]LeetCode 787.k정거장 내 가장 저렴한 항공권 | Python (1) | 2024.01.24 |