Algorithm/문자열

[Baekjoon 1110 / python / 브론즈1] 더하기 사이클

양선규 2024. 3. 28. 21:19
728x90
반응형
n = input()
if len(n) == 1:  # n이 한자릿수 라면 앞에 0을 붙인다
    n = '0' + n

cnt = 0 # 횟수를 세는 변수
num = n
while True:
    num = num[1] + str(int(num[0]) + int(num[1]))[-1]  # 새로운 수 제작
    cnt += 1  # 제작할 때마다 카운트 + 1

    if num == n:  # n과 같아지면 break
        break

print(cnt)

 

n으로 새로운 수를 제작하여, 몇 번 새로운 수를 만들어야 다시 n으로 돌아오는지 출력하는 문제이다.

 

n은 1~99 의 범위에서 주어진다. 예를 들어 26이 주어졌다면,

26의 오른쪽 자리인 "6", 그리고 각 자리를 합한 수의 오른쪽 자리인 2+6="8" 두개를 더하여 "68"을 만들어 낸다.

같은 방법으로 새로운 수를 계속 만들며, 처음 주어진 n과 같은 수가 나왔다면 반복을 종료하고 횟수를 출력한다.

 

난 n을 문자열로 변환하여 문제를 풀었는데, 숫자 상태로 26 // 10 , 26 % 10 이런 식으로 십의 자리와 일의 자리를 구하는 방법도 존재한다. 근데 문자열 방식이 더 간결한 것 같다.

728x90
반응형