jyamethyst21 님의 블로그

백준 1110번- '더하기 사이클' (PYTHON 풀이) 본문

CODING 💻

백준 1110번- '더하기 사이클' (PYTHON 풀이)

jyamethyst21 2025. 11. 10. 23:02

문제:

 

예제 설명이 잘 나와있어서 추가 설명은 하지 않겠다.

 

풀이:

N = input().strip()
count = 0

if len(N) == 1:
    N = '0'+ N
origin = N

while True:
    a = int(N[0])
    b = int(N[1])   
    s = a + b
    N = str(b) + str(s % 10) 

    count += 1

    if N == origin:
        break

print(count)

우선 입력값을 문자형태로 받은 뒤 길이 검사를 먼저 해준다. 두자리 형식을 유지했을 때 계산하기가 편하기 때문에 한자리 수를 입력받았을 때 앞에 0을 붙여서 저장되도록 한다. 이후 원본값을 origin에 넣어두고 루프를 돈다.

루프에서는 각 자리의 수를 따로 떼내서 int로 바꾼 뒤(처음 입력받았을 때 문자로 받은 이유는 인덱싱을 위해서임) 변수에 저장하고 이 값을 더해서 s에 넣는다.

이후 앞자리는 b의 값을 그리고 뒤에 값은 두 값을 더한 s의 맨 마지막 숫자이기 때문에 %를 활용해서 출력한다. 그 다음 사이클수인 count를 1 늘리고 처음 입력받은 값인 N을 담았던 origin과 변경된 N값을 비교해서 동일하면 루프 탈출 후 count(사이클 수)값을 출력한다.