BOJ
[백준][python] 1110 더하기 사이클 ✅
winter17
2023. 1. 24. 20:20
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
풀이 과정
1. 입력받은 수의 일의 자릿수와 십의자릿수를 더해서 나온 값의 일의 자릿수와 입력받은 수의 일의 자릿수를 더하면서 원래의 수로 몇 번을 돌아야 하는지 구하는 문제
2. 입력받을때 정수로 입력을 받고
3. 변하는 값을 num이라는 변수로 두고
4. 몇 번 사이클인지 cnt 변수를 두고 시작한다
5. 몇번을 돌아야 하는지 모르니까 while loop
6. 26이라는 정수를 입력받았을 때 둘로 나누는 방법은 10으로 나눠서 몫과 나머지를 구하는 것
7. N과 num이 같은 수가 나올때까지 while문을 돌린다.
8. 사이클이 한번 돌때마다 cnt += 1
N = int(input())
num = N
cnt = 0
while True: # 26
a = num // 10 # 몫
b = num % 10 # 나머지
c = (a + b) % 10 # 일의 자리
num = (b * 10) + c
cnt += 1
if num == N:
break
print(cnt)
리뷰
while 문을 사용하는 것까지는 알겠는데 int가 아니라 str로 접근해서 이상하게 흘러갔다..
수학적으로 접근해야 풀 수 있는 문제였다
백준 브론즈2 부터는 자력으로 풀 수 있는 문제가 거의 없는데 큰일 났다...