반응형

안녕하세요.
이번 포스팅은 백준 온라인 저지의 2145번 문제 풀이입니다.
문제 이름은 "숫자 놀이" 입니다.
문제
문제 링크는 바로 밑의 링크를 확인해주세요.
https://www.acmicpc.net/problem/2145
2145번: 숫자 놀이
각 줄에 숫자 N이 주어진다. N은 100,000보다 작은 양의 정수이다. 마지막 입력은 0이며, 0에 대한 결과는 출력하지 않는다.
www.acmicpc.net
풀이
1
2
3
4
5
6
7
|
while 1:
n = int(input())
if n == 0:
break
while n > 9:
n = sum(map(int, list(str(n))))
print(n)
|
cs |
1. 0이 입력될 때까지 반복하기 때문에 while문을 통한 무한 반복문을 작성합니다.
2. 숫자 N을 입력받습니다.
3~4. 먼저, 0을 입력하면 처리하지 않고 종료하므로
if문을 통해 무한 반복문을 종료합니다.
5. 입력 받은 숫자 N은 10의 자릿수 이상일 경우만 처리하므로
숫자 9 이상일 경우 N이 1의 자릿수가 될 때까지 반복합니다.
6. 각 자리는 문자로 나누어 리스트로 변환한 후에
[ ex) 숫자 673 -> 리스트에 6, 7, 3으로 변환 ]
map()함수를 통해 다시 int형으로 변환하여 합계를 구합니다.
댓글