백준 1110번 파이썬

iillyy·2021년 3월 11일
0

알고리즘

목록 보기
4/13
post-thumbnail

이 문제도 한 번 풀었던 문제인데 역시나 헷갈려서
생각을 하게 됐던 문제입니다.

매일 하다보면 처음보는 문제도 생각을 조금 하면 풀 수 있겠죠..?

문제는 더하기 싸이클입니다.


3자리 미만의 수가 주어졌을 때 각 자리의 숫자를 더한 값을 n이라 합시다.
그리고 기존의 두번 째 자리의 수와 n의 두번 째 자리의 수를 더합니다.
그렇게 반복하여 기존에 입력한 수가 나오면 멈춥니다.
중요한건 이렇게 계산이 진행될 때 카운트를 세는데, 그 카운트를 출력해야한다는 것입니다.

a = int(input())
c=a   #사이클을 계산하기 위한 변수로 전환
count=1  #첫번 째 계산하는 것도 1번으로 칩니다.

while True:
    b = (c // 10) + (c % 10)  #인풋한 값의 십의자리와 일의자리를 더한 값
    c= (c%10)*10 + b%10 #일의 자리와 일의 자리를 더한 값
    if a == c:     #처음 인풋했던 값과 c를 비교하기 위해서
        break
    count+=1		#답으로 제출하는 카운트, 인풋한 값과 다르면 추가된다.

print(count)

문제는 위에 설명한 바와 같습니다.
이 문제에서 중요했던 점은 리스트형(?) 식으로 반복 계산을 하는 for문과 달리
어떠한 조건이 채워지면 반복을 멈추는 while문을 쓰는 것이었습니다.
아직은 개념들이 헷갈리기 때문에 언젠가 개념 정리한 것도 글을 쓰겠습니다..
화이팅...

처음에는 while문이 뭔지도 모르고 풀었던 문제라
제대로 이해하고 넘어갔다고 하기가 애매한데
문제를 몇 개 풀고 반복해서 쓰다보니 어느 정도 이해가 가는 것 같습니다.
눈 감고도 쓰는 날까지 화이팅이에요.

0개의 댓글