본문 바로가기
알고리즘/완전탐색

[백준][Python] 2635번 수 이어가기

by 임짠짠 2022. 7. 14.
반응형
 

2635번: 수 이어가기

첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.

www.acmicpc.net

 

 

코드

def check(fir,sec):
	n_list = [fir,sec]
	while 1:
		num = fir - sec
		if num < 0:
			break
		n_list.append(num)
		fir = sec
		sec = num
	return n_list

fir = int(input())
sec = fir
max_list = []
while 1:
	cnt = check(fir,sec)
	if len(max_list) < len(cnt):
		max_list = cnt
	sec -= 1
	if sec < 0:
		break
print(len(max_list))
print(*max_list)

 

설명

두 번째 수는 첫 번째 수보다 작거나 같아야 한다. 이 범위에 있는 수의 모든 경우의 수를 구해야 하기 때문에 while문을 돌렸다.

check 함수에서는 n번째 수에서 n+1번째 수를 뺀 값이 음수가 아니면 n_list에 넣어주었고 n_list를 반환해주었다.

n_list의 길이와 기존 max_list의 길이를 비교해서 더 큰 값을 max_list로 바꿔주었다.

반응형

댓글