백준

백준 1110번 더하기 사이클

hyunzxn 2022. 8. 4. 17:58

[문제]

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