https://www.acmicpc.net/problem/1755
문제
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.
문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.
입력
첫째 줄에 M과 N이 주어진다.
출력
M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.
소스코드
n, m = map(int, input().split())
dic = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five', '6':'six', '7':'seven', '8':'eight', '9':'nine', '0':'zero'}
li = []
for i in range(n, m+1):
s = ' '.join(dic[x] for x in str(i))
li.append([i, s])
li.sort(key = lambda x:x[1])
for i in range(len(li)):
if i % 10 == 0 and i != 0:
print()
print(li[i][0], end = " ")
소스코드 설명
1. 딕셔너리를 생성하여 숫자에 맞게 영문명을 입력한다.
2. 해당하는 영문명과 숫자를 리스트에 삽입하는 반복문을 수행한다.
3. 값을 한줄에 10개씩 출력할 수 있도록 출력형태를 구현한다.
'알고리즘' 카테고리의 다른 글
[백준] 11724 - 연결 요소의 개수(python) (1) | 2024.02.29 |
---|---|
[백준] 11728 - 배열 합치기(python) (0) | 2024.01.22 |
[백준] 10845 - 큐(python) (1) | 2024.01.04 |
[백준] 2161 - 카드1(python) (0) | 2024.01.02 |
[백준] 1302 - 베스트셀러(python) (0) | 2024.01.02 |