알고리즘 연습/구현, 문자열

[🥉1 / 백준 2145 / 파이썬] 숫자 놀이

김세진 2021. 7. 21. 05:51
반응형

 

 

2145번: 숫자 놀이

각 줄에 숫자 N이 주어진다. N은 100,000보다 작은 양의 정수이다. 마지막 입력은 0이며, 0에 대한 결과는 출력하지 않는다.

www.acmicpc.net

문제

초등학생인 도겸이는 숫자를 좋아한다. 어느 날 도겸이는 숫자 책을 보다가 간단한 놀이를 하나 생각해냈다. 숫자 놀이의 규칙은 다음과 같다.

  1. 주어진 숫자의 각 자릿수를 더한다.
  2. 결과가 한 자릿수가 될 때 까지 규칙1을 반복한다.

예를들어, 숫자 673에 규칙을 적용해보면 결과는 7이 된다 ; 6 + 7 + 3 = 16, 1 + 6 = 7 

도겸이는 당신과 함께 숫자놀이를 하고싶어한다. 도겸이가 주는 숫자들을 풀어보자.

입력

각 줄에 숫자 N이 주어진다. N은 100,000보다 작은 양의 정수이다. 마지막 입력은 0이며, 0에 대한 결과는 출력하지 않는다.

출력

한 줄에 하나씩 한 자릿수 결과를 출력한다.

 

예제 입력 

673
51
1000
99
0

예제 출력 

7
6
1
9

 

풀이

 

숫자를 한 자리수가 될 때까지 자리별로 더하는 문제이다.

 

반복문 사용, 정수형을 스트링으로, 스트링을 리스트로 변환하는 방법을 숙지하고 있어야 풀 수 있다.

 

while(True):
    n = int(input())
    if n == 0:
        break
    while(n>9):
        n = sum(map(int,list(str(n))))
        # n이 673일 때, 스트링 변환 후 리스트에 담으면 ["6","7","3"] 꼴이 된다.
        # map은 이같은 배열 안의 스트링을 int형으로 편하게 변환시켜 주는 기능을 한다.
    print(n)
반응형