백준 1110번 파이썬 코드 답안
- CS/BOJ
- 2021. 3. 22.
문제
#파이썬 코드 답안
n = int(input())
first = n
if(first < 10) :
first = '0' + str(first)
i = 0
while True :
second = int(str(first)[0]) + int(str(first)[1])
if int(second) < 10 :
second = '0' + str(second)
third = str(first)[1] + str(second)[1]
first = third
i += 1
if(int(third) == n ) :
print(i)
break
아직 초보라 그런가.. 푸는데 한참 걸렸다. 알고리즘 짜는 능력이 굉장히 미숙한 것 같다.
1. 입력 검사문
if(first < 10) :
first = '0' + str(first)
문제에서는 26부터 시작한다고 해서 간과할 수 있는데, 입력 역시 한자리수가 들어올 수가 있다. 이 경우에는 당연히 '0'을 앞에 추가해 두자리 수 인 것처럼 맞추어 주어야 한다.
2. 전체적인 로직 짜기 및 변수 줄이기
머리가 나빠서인가... 한참 헤맸다. 나는 다음과 같은 순서대로 해결했다. 다음에 하라고 하면 똑같이 헤맬 듯
1. 26 (첫번재 값)
2. 2 + 6 = 08 (중간값)
3. 68 (세번째값 = 첫번째값 + 중간값)
4. 6+ 8 = 14 (중간값)
5. 84 (세번째값 = 첫번째값 + 중간값)
위와 같은 식으로 수열이 계속 진행된다고 볼 수 있다. 따라서 첫번째 값에서 중간값을 만들고, 그리고 그 첫번째값과 중간값이 더해져서 세번째 값이 만들어지고, 그런데 그 세번째 값이 그 다음 첫번째값이 되어, 그 다음 세번째값을 만든다. 따라서, 위와 같은 변수가 설정되었다.
결국, 세번째가 초기 입력값인 n과 같아질 때를 찾는 것이기 때문에 그 때가 되는 값을 찾아서 n을 출력하도록 했다.
'CS > BOJ' 카테고리의 다른 글
백준 10871 파이썬 코드 답안 (0) | 2021.03.22 |
---|---|
백준 15552번 파이썬 코드 (0) | 2021.03.22 |
백준 2439번 파이썬 코드 (0) | 2021.03.21 |
백준 2884번 파이썬 코드 답안 (0) | 2021.03.21 |
백준 14681번 파이썬 코드 (0) | 2021.03.21 |