티스토리 뷰

📚 문제

입력

출력

예제 입력

8 28

예제 출력

8 9 18 15 14 19 11 17 16 13
12 10 28 25 24 21 27 26 23 22
20

🧑🏻‍💻 풀이 과정

  • 숫자를 단어로 변환하기 위한 딕셔너리(word_dict)를 선언하자.
  • m부터 n까지의 숫자를 하나씩 가져온 뒤, 숫자 -> 문자로 변환(word = str(i))해서 다시 반복하면서 2자리 이상이면 변환된 단어뒤에 " "를 추가해서 저장하고, 한 자리면 변환된 단어만 저장하자.
  • 이렇게 구한 값을 문자를 키로, 숫자를 값으로 저장(_dict)하자.
  • 키(문자)를 오름차순 정렬해서 출력하자.
import sys


def number_game(m, n):
    global word_dict

    _dict = {}
    for i in range(m, n + 1):
        word = str(i)
        word_len = len(word)
        tem = ""
        for j in range(word_len):
            if j + 1 < word_len:
                tem += (word_dict[int(word[j])] + " ")
            else:
                tem += word_dict[int(word[j])]

        _dict[tem] = _dict.setdefault(tem, word)

    return _dict


m, n = map(int, sys.stdin.readline().rstrip().split())
word_dict = {0: 'zero', 1: 'one', 2: 'two', 3: 'there', 4: 'four', 5: 'five', 6: 'six', 7: 'seven',
             8: 'eight', 9: 'nine'}

ans = number_game(m, n)
print_cnt = 1
for i in sorted(ans.keys()):
    if print_cnt == 10:
        print(ans[i])
        print_cnt = 1
    else:
        print(ans[i], end=" ")
        print_cnt += 1

다른 사람이 풀이한 결과를 보면서 스스로 많이 부족하단 것을 느꼈던 시간이였다..
더 깔끔한 코드가 나오도록 연습하자!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함