[문제]
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
[내가 짠 코드]
start = int(input())
num = start
count = 0 # 원래 숫자로 돌아오는데까지 걸리는 횟수
while True:
a = num // 10 # 두자리 숫자에서 10의 자리 숫자만을 얻음
b = num % 10 # 두자리 숫자에서 1의 자리 숫자만을 얻음
c = (a+b) % 10 # 문제 조건에 따라 앞자리 숫자 + 둣지라 숫자해서 얻은 두자리 숫자 중 1의 자리 숫자만을 얻음
num = (b * 10) + c # 새로 얻은 값을 num에 할당함으로써 num이 대체됨 => 기존 num은 최초의 input 값
count += 1 # 위의 작업을 한 번 할 때마다 횟수가 1씩 증가
if num == start:
break
print(count)
[새로 알게 된 것]
a = num // 10 # 두자리 숫자에서 10의 자리 숫자만을 얻음
b = num % 10 # 두자리 숫자에서 1의 자리 숫자만을 얻음
# 10의 자리 숫자와 1의 자리 숫자를 얻는 새로운 방법을 알게 됐음
start = int(input())
num = start
# 이걸 해주는 이유에 대해서 생각해봤음
# 최초의 input 값을 start에 일단 할당을 함
# 그리고 그 값을 다시 num에 할당하는 이유는 밑에서 num이 계속 바뀔 수 있기 때문임
# 10의 자리와 1의 자리 숫자를 얻을 때 start에서 얻으면 계속 같은 값만 얻을 수 밖에 없음
# 그러나 문제에서는 계속 그 숫자가 바껴야 하고 그렇기 위해서는 num이 업데이트가 되어야 함
# 따라서 최초의 input을 일단 num에 저장해놓고
# 새로운 값이 만들어질 때마다 num에 할당함으로써 num을 업데이트 하는 식으로 진행하기 위해 num = start 해줌
728x90
'백준' 카테고리의 다른 글
백준 4673번 셀프 넘버 (0) | 2022.08.08 |
---|---|
백준 4344번 평균은 넘겠지 (0) | 2022.08.04 |
백준 2525번 오븐 시계 문제 (0) | 2022.05.22 |