반응형

-풀이

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문에 어쩌다보니 반복된 코드를 두개 사용하게 됐는데 좀 더 좋은 방법을 찾아봐야할 것 같다.

출처 : https://wook-2124.tistory.com/222

구글링을 해봤는데, 역시나 코드길이를 짧게 풀 수 있었다.. 문제 조건이 애초에 두 자리수에 오른쪽 끝자리만 빼오는 것이였기 때문에 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

+ Recent posts