본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 1110번 더하기 사이클(with python)

by 윤무무 2023. 1. 17.

 

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)

 

댓글