TODAY TIL

안녕하세요! 😊 오늘은 숫자를 영어로 읽어서 사전순으로 정렬하는 재미있는 문제를 함께 풀어보겠습니다. 이 문제는 파이썬으로 간단하게 구현할 수 있으니, 따라오세요!


문제 설명 📖

  1. 숫자를 숫자 단위로 영어로 읽는다.
    • 예: 79 → seven nine, 80 → eight zero
  2. 영어로 읽은 숫자를 기준으로 사전순 정렬한다.
    • 예: 80 (eight zero) → 79 (seven nine)
  3. 정렬한 숫자를 한 줄에 10개씩 출력한다.

입출력 예시 📝

입력

79 80

 

출력

80 79

 

또 다른 예시

입력

8 15

 

출력

8 11 12 13 15 14 10 9

 

문제 풀이 과정 💡

1단계: 숫자를 영어로 변환하기

숫자를 하나씩 쪼개서 영어로 읽어야 해요.
예를 들어:

  • 79 → seven nine
  • 80 → eight zero

이를 위해 각 자리 숫자를 영어로 변환하는 함수를 만듭니다.

2단계: 정렬 기준 만들기

숫자를 영어로 변환한 후, 영어 문자열 기준으로 정렬합니다.

3단계: 한 줄에 10개씩 출력하기

정렬된 숫자들을 10개씩 묶어서 출력하면 됩니다.

 

파이썬 코드 🐍

def number_to_words(num):
    # 숫자를 영어로 변환하는 함수
    digits = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    return " ".join(digits[int(digit)] for digit in str(num))

def solve_number_problem(M, N):
    # M부터 N까지 숫자를 영어로 변환하여 정렬
    numbers = list(range(M, N + 1))
    sorted_numbers = sorted(numbers, key=number_to_words)
    
    # 결과를 한 줄에 10개씩 출력
    for i in range(0, len(sorted_numbers), 10):
        print(" ".join(map(str, sorted_numbers[i:i + 10])))

# 입력 받기
M, N = map(int, input().split())
solve_number_problem(M, N)

 

코드 설명 🛠️

함수 number_to_words

  • 숫자 하나를 받아서 숫자 단위로 영어 문자열로 변환합니다.
  • 예: 79 → seven nine, 80 → eight zero
  •  
digits = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
return " ".join(digits[int(digit)] for digit in str(num))

 

함수 solve_number_problem

  1. M부터 N까지 숫자를 리스트로 생성합니다.
    • 예: M=79, N=80 → [79, 80]
  2. 숫자를 number_to_words 기준으로 정렬합니다.
    • 예: 79 → seven nine, 80 → eight zero
    • 정렬 결과: [80, 79]
  3. 한 줄에 10개씩 출력합니다.
    • 예: print(" ".join(...))

예제 실행 결과 🎯

입력

8 15

 

출력

8 11 12 13 15 14 10 9

 

문제를 해결하면서 배운 점 📚

  1. 숫자를 영어로 변환하기 위해 문자열 처리를 배웠어요.
  2. sorted 함수로 정렬 기준을 자유롭게 설정하는 방법을 익혔어요.
  3. 한 줄에 10개씩 출력하는 반복문 작성법도 알게 되었어요.

마무리 ✍️

이번 문제는 숫자를 영어로 읽는 독특한 방법과 정렬 기준 설정이 핵심이었습니다. 여러분도 파이썬으로 재미있게 구현해보세요! 😊

+ Recent posts