상세 컨텐츠

본문 제목

백준 1110 - 더하기 사이클 (파이썬)

Tech/백준 단계별 문제

by 2020. 6. 21. 15:46

본문

진짜 오랜만에 다시 돌아왔습니다...!(...날짜보니까 한달만이네요...ㅎㅎㅎㅎㅎㅎㅎㅎㅎ)

그동안 정보처리기사 필기 합격을 하고... 한국사에 좀 손대다가...

알고리즘 다시 조금씩 풀어보려고 돌아왔어요!

 

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

더하기 사이클에 관한 while 문 문제입니다!!

 

먼저! 주어지는 숫자는 0~99 사이의 정수입니다.

이때 정수가 한 자리 수이면, 앞에 0을 붙여줍니다.

따라서 우리가 받는 수는 00, 01, 02, ... , 99 중에 있는 것입니다.

여기서 if문을 한 번 사용하여, 앞에 0을 붙이는 코드를 작성해줄 것을 예상해봅니다.

 

그런다음, 두 자리 수를 더합니다.

더한 수의 일의 자리를 새로운 수의 일의자리로, 원래 수의 일의자리를 새로운 수의 십의자리로 배치합니다.

 

이런방식을 계속 사용했을 때, 처음에 입력받은 수로 가기까지 몇 번이 걸리는지를 세는 문제입니다.

여기서 숫자의 일의자리 십의자리를 떼어서 생각하기 때문에 input값은 string으로 받는 것이 좋습니다.

string은 인덱싱이 가능한데 integer는 인덱싱을 할 수 없기 때문이에요!

여기서 인덱싱은 값에 순서가 있어서 순서 이용하여 그 세부값?을 알 수 있는 것을 뜻합니다.

 

 

 

num = input()  # 숫자 string으로 입력받기

if int(num)<10:     # 숫자가 10보다 작으면 앞에 0을 붙여줍니다.
    num = '0'+ num

before = num    # before라는 변수를 새롭게 만들어줍니다. 비교를 편하게 하기 위함이에요.
newnum = ''
count = 0

while num != newnum :
    newnum = before[-1] + str(int(before[0])+int(before[-1]))[-1]
    count += 1
    before = newnum

print(count)

 

관련글 더보기