한 걸음씩 기록하며
[백준] 1110번 더하기 사이클 본문
⛏ 문제 파악
- 주어진 수가 한자리 수면, 앞에 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
📑 간단한 설명
- 연산으로 푸니깐 시간초과 되지 않고 잘 해결되었다...ㅎㅎ 특이사항이 없는 문제여서 설명은 넘기겠다.
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[백준] 1002번 터렛 (0) | 2022.03.05 |
---|---|
[백준] 1011번 Fly me to the Alpha Centauri (0) | 2022.03.05 |
[백준] 1929번 소수구하기 (0) | 2022.03.04 |
[백준] 10250번 ACM 호텔 (0) | 2022.03.03 |
[백준] 4948번 베르트랑 공준 (0) | 2022.03.02 |
Comments