진짜 오랜만에 다시 돌아왔습니다...!(...날짜보니까 한달만이네요...ㅎㅎㅎㅎㅎㅎㅎㅎㅎ)
그동안 정보처리기사 필기 합격을 하고... 한국사에 좀 손대다가...
알고리즘 다시 조금씩 풀어보려고 돌아왔어요!
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)
백준 5543 - 상근날드 (파이썬) (0) | 2020.07.13 |
---|---|
백준 10039 - 평균 점수 (파이썬) (0) | 2020.07.12 |
백준 10951 - A+B-4 (파이썬) (0) | 2020.05.21 |
백준 10952 - A+B-5 (파이썬) (0) | 2020.05.21 |
백준 10871 - X보다 작은 수 (파이썬) (0) | 2020.05.20 |