본문 바로가기
알고리즘/배열 \ 정렬

#19 [파이썬] 백준 1755번: 숫자놀이

by 채채씨 2021. 4. 25.
728x90
반응형

<문제>

www.acmicpc.net/problem/1755

 

1755번: 숫자놀이

79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로

www.acmicpc.net


 

<소스코드>

m, n = map(int, input().split())

dict = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five', '6':'six',
        '7':'seven', '8':'eight', '9':'nine', '0':'zero'}

lst = []

for i in range(m, n+1):
    itoa = ' '.join([dict[j] for j in str(i)])
    lst.append([i, itoa])
    
lst.sort(key=lambda x:x[1])

for i in range(len(lst)):
    if i%10 == 0 and i!= 0:
        print(sep = '\n')
    print(lst[i][0], end=' ')

 

<NOTE>

1. 숫자를 문자로 바꾸어서 문자 각각을 for문에 적용하여 리스트로 만든다. 그 후 띄어쓰기로 구분하여 리스트 요소만 추출할 수 있는 ' '.join()을 활용한다.

 

2. 정렬을 할 때, key인자를 사용하여 무엇을 기준으로 나열할 것인지 정한다.

 

3. 10개씩 끊어서 출력할 때는 idx % 10 == 0이면서 idx != 0인 것을 주의한다. 줄바꿈은 print(sep = '\n') 또는 print()로 해준다.

 

4. 해시에서, dict[key]를 통해 value에 접근할 수 있다.

728x90
반응형

댓글