Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [1110] - 더하기 사이클

yaebb_82 2022. 8. 6.

 

 

 

문제

 

 

 

작성한 코드

import sys

input = sys.stdin.readline

N = int(input())
comp = N
cycle = 0

while True:
    F = N//10
    B = N%10
    answer = F+B
  
    aB = answer%10
    N = (B*10)+aB
  
    cycle += 1 

    if N == comp:
        break
        
print(cycle)

- sys.stdin.readline을 input에 할당하여 사용하였다.

- input()으로 문자를 입력받고, int형으로 형변환하여 N에 저장한다. (N은 처음 입력받은 수)

- comp에 N 값을 넣어 나중에 비교대상으로 사용하고, cycle에는 0을 넣어 이후에 반복되는 횟수만큼 증가시켜준다.

- while문의 조건을 True로 하여 무한반복되게 하고, 만약 N의 값과 comp의 값이 같을 경우에는 break문으로 반복문을 멈춘다.

- F(front, 10의 자리)는 N을 10으로 나눈 몫의 값을 넣어주고, B(back, 1자리)는 N을 10으로 나눈 나머지의 값을 넣어준다.

- answer에는 F+B의 값을 넣어준다.

- 문제와 같이, 주어진 수의 가장 오른쪽 자리 수와 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다.

   때문에 answer의 가장 오른쪽 자리 수를 aB라고 하여, answer를 10으로 나눈 나머지를 넣어준다.

   이후 주어진 수의 가장 오른쪽 자리의 수인 B에 10을 곱해주고, 구한 합의 가장 오른쪽 자리 수인 aB를 더해준다.

   그리고 N에 다시 넣고, cycle은 1을 증가시켜준다.

- N과 comp의 값이 같아서 반복문이 멈추고, cycle의 값을 print()로 출력한다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [2562] - 최댓값  (0) 2022.08.08
백준 [10818] - 최소, 최대  (0) 2022.08.08
백준 [10951] - A+B-4  (0) 2022.08.06
백준 [10952] - A+B-5  (0) 2022.08.06
백준 [10871] - X보다 작은 수  (0) 2022.08.06

댓글