728x90
https://www.acmicpc.net/problem/1912
(1) 첫번째 코드 - 메모리 초과
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split(" ")))
M = len(num)
dp = [[-1000] * (M) for _ in range(M)]
answer = -1000
# print(num)
for i in range(M):
for j in range(M):
if i == j:
dp[i][j] = num[j]
elif i > j:
continue
else:
dp[i][j] = dp[i][j - 1] + num[j]
for i in range(M):
answer = max(answer, max(dp[i]))
print(answer)
이차원 배열로 풀었는데, 메모리 초과가 두번이나 나서 일차원 배열을 사용해야함을 깨달았다.
(2) 두번째 코드 - 성공
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split(" ")))
M = len(num)
dp = [-1000] * (M)
dp[0] = num[0]
for i in range(1, M):
dp[i] = max(dp[i - 1] + num[i], num[i])
print(max(dp))
728x90
'Study > Coding Test' 카테고리의 다른 글
[백준] 2156 - 포도주 시식 Python (0) | 2023.10.10 |
---|---|
[백준] 1406 - 에디터 Python (0) | 2023.10.10 |
[백준] 7576 - 토마토 Python (1) | 2023.10.09 |
[백준] 10773 - 제로 Python (0) | 2023.10.09 |
[백준] 2346 - 풍선 터뜨리기 Python (0) | 2023.10.09 |