알고리즘 & 코딩테스트
[백준] 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
📑 간단한 설명
- 연산으로 푸니깐 시간초과 되지 않고 잘 해결되었다...ㅎㅎ 특이사항이 없는 문제여서 설명은 넘기겠다.