백준 1110_더하기 사이클 - python
출처 : https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
실패했다..
실패한 코드 :
말그대로 못찾았다 뭐가 문제인지.. 일단 멈추지 않고 계속 돌은 것을 보면 내가 while break를 잘 이해 못한것 같다. 글고 한자리 수는 상관이 없는데 그거에 대해서 너무 고려했던 것 같다..
참고한 풀이 :
1. 일단 N= int(input()) 으로 숫자를 받아온다. 그 후 과정을 카운팅 해야하므로 result=0 으로 해서 과정을 세어준다.
그리고 num = N 으로 설정해두자 밑에서 사용해주자.
2. while 1(True)를 사용해서 break 를 걸지 않으면 계속 진행 할 수 있게 해준다.
3. 56/10 을 하면 5.6 이다 여기에 int(5.6)을 하게 되면 5가 출력 되므로 십의 자리를 구할 수 있다.
56 %10 을 하면 나누기해서 나온 나머지 6이 나오게 된다. 이는 일의 자리와 같으므로 이를 이용해주자
4. 예시를 보면 26 같은 경우 2+ 6 = 8 을 만들었다. 그래서 우리도 이처럼 sum_num = int(num/10) + num%10 를 해준다.
5. 그 다음 6과 8 을 이용해 68을 만들었다. 이렇게 new_num도 쉽게 구할 수 있다.
6. 이젠 이렇게 하면 한 과정을 거친 것이므로 result += 1 을 해서 1번 진행했음을 알려주자.
7. 그리고 이젠 브레이크를 걸어야하는데 어디서 걸어야하냐!! 바로. new_num == N 이 TRUE 이면 만족하므로 브레이크를 걸어주고
여기서 멈추지 않았다면 num를 new_num로 업데이트해서 계속 진행 시킨다.
ps. 브론즈 1인데.. 못 푼게 너무 속상하다... 그리고 뭔가 아쉽게 못 푼거 같아 속상하다... 더 풀고 싶은데 너무 졸리다... 오늘은 한문제..