PS/Python
[Python] 백준(BOJ) 2635번: 수 이어가기
yoo.o
2021. 11. 10. 16:04
반응형
문제
2635번: 수 이어가기
첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.
www.acmicpc.net
풀이
규칙에따라 계산하는 함수 calc()를 먼저 만들고, 브루트포스로 입력받은수 N까지 다 돌리며 가장 큰 경우를 찾았다.
N의 반보다 작은 수는 100-> 1->-99 이런식으로 두번밖에 안되기 때문에 시간을 줄이기 위해 N // 2부터 돌렸다.
import sys
def calc(second_number):
result = []
result.append(N)
result.append(second_number)
index = 2
while result[index - 2] - result[index - 1] >= 0:
result.append(result[index - 2] - result[index - 1])
index += 1
return result
max_num = 0
max_sec = 0
N = int(sys.stdin.readline())
for i in range(N // 2, N+1):
if len(calc(i)) > max_num:
max_num = len(calc(i))
max_sec = i
print(max_num)
string = ""
for each in calc(max_sec):
string += str(each) + " "
print(string)
반응형