티스토리 뷰

반응형

과제의 시즌이 돌아왔나보다. 그리고 여느때보다도 네이버 지식즐에는 파이썬 관련 질문(이라 쓰고 숙제 대행이라 읽는다)이 넘쳐나듯 많아졌다. 오늘 눈에 많이 띈 문제는 정수를 입력받아서 한글 표기로 변환해주는 코드를 작성하는 것이었다. 예를 들어 2345라는 숫자를 주면 "이천삼백사십오"라고 변환해주는 것이다.


사실 간단한 문제다.


1. 일의 자리는 단위를 붙여읽지 않는다. 다만 일, 이, 삼, 사 .... 구 와 같이 숫자에 해당하는 글자가 온다.

2. 일의 자리가 0으로 끝나면 그 자리를 읽지 않는다. 이는 천, 백, 십의 자리에서도 마찬가지이다.

3. 십, 백, 천의 자리는 숫자를 읽은 글자와 단위 글자를 붙여준다.


입력된 수가 n 이라 할 때 다음과 같이 처리한다.


1. 현재처리중인 자리수를 나타내는 i 를 준비하고 0으로 초기화한다.

2. n을 10으로 나눈 몫과 나머지를 찾는다. 이때 n은 10으로 나눈 나머지가 된다.

3. 나머지가 0이면 해당 자리는 건너뛴다.

4. 그렇지 않으면 나머지에 해당하는 숫자와, i를 이용해서 해당하는 단위값을 구하고, 이를 붙인다.

5. 4에서 구한 문자열을 임시 리스트에 추가한다.

6. n이 0이 될때까지 2~5의 과정을 반복한다.

7. 임시리스트에는 일의자리부터 천의 자리까지의 글자가 역순으로 들어있다. 이를 뒤집어서 이어붙인다.


이를 파이썬 함수로 옮기면 다음과 같다.



그렇다면 1억 미만의 숫자도 처리할 수 있을까? 이는 만 단위를 기준으로 천만~만 의 구간과 천~일의 구간으로 나뉜다.

두 구간은 동일한 방식으로 처리할 수 있고, 만 이상의 값이 있으면 두 결과를 '만'자를 사이에 넣어 연결하면 된다.


이미 위에서 천~일 사이의 숫자를 한글로 변환하는 함수를 만들었으니, 그 함수를 재사용해서 간단하게 짜면 된다.




반응형

'숙제는 지식즐' 카테고리의 다른 글

윤년을 체크하는 방법  (0) 2019.10.26
주어진 집합에서 랜덤하게 원소를 고르기  (0) 2019.07.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함