-풀이
n = int(input())
a = n
cnt = 0
while True:
strn = str(n)
if len(strn) == 1:
strn = '0' + strn
second = int(strn[0]) + int(strn[1])
n = int(strn[-1]+str(second)[-1])
cnt += 1
if a == n:
print(cnt)
break
else:
second = int(strn[0]) + int(strn[1])
n = int(strn[-1]+str(second)[-1])
cnt += 1
if a == n:
print(cnt)
break
============================
-풀이 설명[느낀점]
[40분 sol] while문을 사용하면서 숫자 길이기 한개일 때를 구분하기 위해 if문과 else문에 어쩌다보니 반복된 코드를 두개 사용하게 됐는데 좀 더 좋은 방법을 찾아봐야할 것 같다.
구글링을 해봤는데, 역시나 코드길이를 짧게 풀 수 있었다.. 문제 조건이 애초에 두 자리수에 오른쪽 끝자리만 빼오는 것이였기 때문에 10을 나눈 나머지나 몫을 이용해서 충분히 쉽게 풀 수 있었다. 추가적으로 문제 내용중 낚시였던 점은 정수 길이가 1개일 때 앞에 0을 붙인 다는 것은 어차피 -1인덱스를 가져오기 때문에 상관이 없었던 것이었다... 그러므로 내가 짠 코드도 조건문을 뺄 수 있어서 더욱 간결하게 작성할 수 있었다.
=>수정한 풀이
n = int(input())
a = n
cnt = 0
while True:
strn = str(n)
if len(strn) == 1:
second = int(strn[0])
else:
second = int(strn[0]) + int(strn[1])
n = int(strn[-1]+str(second)[-1])
cnt += 1
if a == n:
print(cnt)
break
'알고리즘' 카테고리의 다른 글
[구현] 백준 2577파이썬 (숫자의 개수) 브론즈2 (0) | 2021.11.01 |
---|---|
[구현] 백준 2562파이썬 (최댓값) 브론즈2 (0) | 2021.11.01 |
[입출력] 백준 10171파이썬 (고양이) 브론즈5 (0) | 2021.10.31 |
[DP] 백준 1003파이썬 (피보나치 함수) 실버3 (0) | 2021.10.31 |
[구현] 백준 6609 파이썬 (모기곱셈) 브론즈3 (0) | 2021.10.31 |