haju__log

[python][백준/BOJ] 1110번 : 더하기 사이클 본문

BOJ_백준

[python][백준/BOJ] 1110번 : 더하기 사이클

haju 2023. 8. 19. 20:00
반응형

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

✅ 문제풀이 

  • 입력받은 정수 n 이 10보다 작으면 앞에 0을 붙여서 ex> '01' 로 반환해 nn으로 저장해서 넘겨준다.
  • 만약 10보다 크면 그냥 문자열로만 바꿔서 nn으로 넘겨준다.
  • nn값을 가지고 while문을 반복한다.
  • 일단 각각의 자리값을 정수로 바꾸어 합(hap)의 값을 구한다.
  • 합의 제일 오른쪽 자리 (hap[-1)와 nn 문자의 제일 오른쪽 자리(nn[-1])를 자리그대로 붙여서 w라는 새로운 문자를 만든다.
  • flag의 값 증가시킨다. flag는 사이클의 횟수 저장하는 변수
  • w가 처음 입력받았던 n과 동일할 때 while문을 멈추고, 아니라면 nn값을 w로 바꿔주고 다시 반복문 재실행함.
import sys

n=int(sys.stdin.readline())
flag=0

if n < 10:
    nn = '0' + str(n)
else:
    nn=str(n)
while True:
    hap=int(nn[0])+int(nn[1])
    hap=str(hap)
    w=nn[-1]+str(hap[-1])
    flag+=1
    if n==int(w) :
        break
    else:
        nn=w

print(flag)
반응형