🔅코딩테스트 공부🔅/❗백준
[백준] 1110번 더하기 사이클(with python)
윤무무
2023. 1. 17. 14:02
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
1. 내가 작성한 코드 (틀림, 수정 필요)
c = 0
sum = '0'
new = input()
#while new != str(sum):
if int(new) < 10:
new = '0' + new
c = c+1
print(new, sum)
else:
sum = int(new[0])+int(new[1])
new = new[1] + str(sum[-1])
c = c+1
print(new, sum)
나머지랑 몫을 이용할 생각을 진짜 1도 못했다!
코테에서 가장 무서운 점이 '잘못된 방향을 고칠 줄 모르는 것'이라는 걸 새삼 깨달음,,
위의 코드처럼 문자열의 자릿수를 이용해서 풀고 있었는데 도저히 풀리지가 않음,,,
아마 좀 더 고민하면 될 거 같긴 하지만 ! 너무나 비효율적인 것 같다.
구글링을 해보고 아차 싶었잖슴,, 이렇게 쉬운 문제였다니 😎
2. 모범답안
input_num = int(input())
num = input_num # num 변수에 input_num을 지정
cnt = 0
while True:
sum_num = (num // 10) + (num % 10) # 각 자릿수를 더한수
new_num = ((num % 10) * 10) + (sum_num % 10) # 새로 만들어지는 수
cnt += 1 # 사이클 카운트
if new_num == input_num :
break
num = new_num # num 변수에 last_num을 지정
print(cnt)