728x90
반응형
https://www.acmicpc.net/problem/2635
2635번: 수 이어가기
첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.
www.acmicpc.net
문제 해결
- 첫 번째 수가 주어지고 두 번째수는 첫번째 수 이하인 부분들을 반복해나가면서 최적의 수를 찾아야한다.
- 사실 재귀를 사용해서 최대 길이를 찾는 것은 어렵지 않다.
- 하지만 문제를 잘 읽어야하는게 이후 나오는 수들은 0이여도 상관이 없다는 것이다.(음이 아닌 수이기 때문)
- 문제 난이도는 쉬운 편
CODE
import sys
input = sys.stdin.readline
def dfs(A:list):
global target, ans
if A[-2] - A[-1] >= 0:
A.append(A[-2] - A[-1])
dfs(A)
else:
if ans < len(A):
target = A
ans = len(A)
def main():
global ans, target
for i in range(1,n+1,1):
A = [n, i]
dfs(A)
print(ans)
print(*target)
if __name__ == "__main__":
n = int(input())
ans = 0
target = []
main()
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 20188 등산 마니아 (0) | 2024.05.22 |
---|---|
[python] 백준 2150 Strongly Connected Component (0) | 2024.05.09 |
[python] 백준 6986 절사평균 (0) | 2024.04.17 |
[python] 백준 14582 오늘도 졌다 (0) | 2024.04.14 |
[python] 백준 2643 색종이 올려 놓기 (0) | 2024.04.08 |
댓글