[Baekjoon - 1110]

jjiani·2021년 2월 2일
0

Baekjoon

목록 보기
3/16


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

🔑 나의 풀이

n = int(input())
new_num = 0
count = 0
if n == 0 :
    count = 1
else :
    while n != new_num :
        # 첫 사이클        
        if count == 0 :
            x,y = divmod(n,10)
        # 두 번째 사이클 이상
        else :
            x,y = divmod(new_num,10)

        new_num = x+y
        new_num = y*10 + (new_num%10)        
        count +=1
print(count) 
  • 주어진 수가 만약 10보다 작더라도 따로 케이스를 나눌 필요가 없는 문제! 처음엔 10보다 작은 수를 if문을 넣어주었지만 생각해보니 안그래도 되더라. 왜냐하면 1의 경우를 생각해보았을때 앞에다 0을 붙여줘도 어차피 1이니까! 우리는 뭐가됐든간에 앞으로 오른쪽숫자(즉, 1의자리수)만 생각하면 되기때문에 따로 조건을 나눌 필요가 없다!
  • 입력값(n)을 10으로 나눈 몫(x)나머지(y)를 더해주고, 더해준 값(x+y)을 또 10으로 나눈 나머지(new_num%10)가 1의 자리가 되고 처음 나눠준 수의 나머지가 10의 자리수(y*10)가 된다.
  • 처음에는 생각을 다 끝낸 뒤에 코드로 구현하는 것이 올바른 방향이라고 생각했는데 생각보다는 하고싶은 것을 주석으로 달아놓고 그것을 한줄한줄 코드로 써보며 고쳐가는게 빠른듯하다!👀
  • 코드를 더 줄이고 싶다면 str로 형변환을 한 뒤 다시 int로 형변환하면 더 짧은 코드를 쓸 수 있겠다! 아니면 다른 변수를 추가해보자!
profile
¡Bienvenido a mi velog!🐣

0개의 댓글