nan + nan = 2nan

[백준] [Python3] #1110. 더하기 사이클 본문

Python/백준 알고리즘

[백준] [Python3] #1110. 더하기 사이클

2nan 2021. 8. 4. 00:44
728x90


코드 입력

N = int(input())
count = 0
cf = N

while N < 100:
    
    T = (N // 10) + (N % 10)
#   8         2          6
    New = (N % 10) * 10 + (T % 10)
#   68       6   X 10    +    8              
    count += 1
    N = New
    if New == cf:
        break

print(count)

 

얼른 풀고 맥주 먹고 잘라 그랬는데 1시간을 소모한 문제..

 

 

문제를 읽고 어느정도 로직은 머릿 속에 그려졌지만,

formatting과 try / except, 정말 여러가지 방법을 사용해보았지만

무한반복에 빠지거나 머리가 빠지거나 둘 중 하나

 

결국 참조를 해보았다.

 

count와 N에 동등한 값을 갖는 새로운 변수를 생성하는 것이 답이었다.

26 이라면, 2 + 6 = 8 이고 다음 수가 68로 만들어지는 과정을 만들기 위해,

N을 10으로 나눈 몫과 나머지 값을 이용하는 로직.

그리고 68을 만들기 위해 나머지 값에 10을 곱하고, T가 10이 넘을 수도 있으니 일의 자릿 수만 빠져나오게 하기 위해

10으로 나누어 준 나머지 값을 사용.

이 루프를 돌릴 때마다 count가 1씩 늘어나게 함수를 생성하고,

사실

N = New
    if New == cf:

이 부분에서 if 문 전에 왜 N = New라는 식을 생성한지는 이해가 되지 않는다..

 

기회가 닿는다면 질문해봐야겠다

오늘 하루도 힘들었따

 


출처 : 백준 Online Judge

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

Comments