📍 문제 | https://www.acmicpc.net/problem/1110
문제번호 : 1110번
문제제목 : 더하기 사이클
개념 : while문
난이도: 하
풀이
이 문제의 경우 100보다 작은 수 하나를 입력 받아 각 자리 수를 더해 1의 자리 수를 새로운 수의 1의 자리에, 원래 수의 1의 자리를 10의 자리로 만들어 계속해서 더해가다 입력 받은 수와 같은 수가 나올 때까지의 횟수를 구하는 문제입니다.
출처 | https://gabii.tistory.com/entry/BaekJoonPython3-%EB%B0%B1%EC%A4%80-1110%EB%B2%88-%EB%8D%94%ED%95%98%EA%B8%B0-%EC%82%AC%EC%9D%B4%ED%81%B4
제출한 답
num = int(input())
if num < 10:
num*=10
origin = num #num은 newnum을 저장해서 반복문을 수행해야하므로 원래 값을 기억해줄 변수 선언
count = 0 # 로직이 몇번 돌았는지 카운팅 해 줄 변수 초기화
newnum = 0 #변화된 값을 만들어주고 num에게 전달해줄 중간 역할 변수 선언
while True:
#만약 26이라면 2와 6을 분리 -> 2 + 6
temp = (num // 10) + (num % 10)
#원래 숫자의 일의 자리 숫자와 더해서 나온 더하기 값의 일의 자리 숫자를 합쳐 줘야함
newnum = ((num % 10)*10) + (temp % 10)
#그렇게 만들어진 새로운 숫자를 다시 쪼개서 temp에 주는 로직을 처리하기 위해 num을 넣어줌
num = newnum
count += 1 #반복문이 한번 돌았으니 카운팅 +1
if newnum == origin: #수행 결과가 원래 값이랑 일치한지 검사
break #일치 하면 while을 부수고 나오렴~
print(count)
🤷♀️풀면서 느낀점
문제를 많이 풀면 되겠지... 괜찮을거야... 밥이나 먹자
먹고 힘내야지.. while문 공부하렴
🚩항해99_ch2알고리즘 2021-03-05