알고리즘 & 코딩테스트

[백준] 1110번 더하기 사이클

Haksae 2022. 3. 4. 03:08

⛏ 문제 파악

  • 주어진 수가 한자리 수면, 앞에 0을 붙여서 두 자리 수로 만들고, 십의 자리와 일의 자리 숫자를 더한다.
  • 1) 기존 숫자의 일의 자리 숫자 2) 더한 값의 일의 자리 숫자
  • 1)을 십의 자리로, 2)를 일의 자리로 한 새로운 숫자를 생성한다.
  • 이러한 더하기 사이클을 반복하여 생성된 숫자가 처음 주어진 수와 동일하면 멈추고, 사이클이 몇번 진행됐는지 리턴한다.

👉🏻  답안

1) 문자열로 푸는 방법

  • 문자열로 풀려고 했는데.. 이게 시간초과가 났습니다.
  • 여러 도전을 해봤는데 실패하여 이 방법을 포기하고 연산하는 방법으로 진행했습니다. 
n = input()

x = n
count = 0

while True:
  if len(x) == 1:
    x = "0"+x
  sumX = str(int(x[0])+int(x[1]))
  x = (x[-1])+(sumX[-1])
  count += 1
  if n == x:
    print(count)
    break

2) 연산으로 푸는 방법

n = int(input())

x = n
count = 0

while True:
    first = x // 10
    second = x % 10
    newNum = (first + second) % 10
    x = second * 10 + newNum
    count += 1
    if n == x:
        print(count)
        break

📑  간단한 설명

  • 연산으로 푸니깐 시간초과 되지 않고 잘 해결되었다...ㅎㅎ 특이사항이 없는 문제여서 설명은 넘기겠다.