재풀이하여 올렸습니다.~
문제
코드
My answer(시간초과)
import sys
input=sys.stdin.readline
n=int(input())
num=list(map(int,input().split()))
answer=[]
for i in range(n):
dp=[]
dp=list(sum(num[j:j+i+1]) for j in range(len(num)-i))
answer.append(max(dp))
#print(answer)
print(max(answer))
Another answer
import sys
input=sys.stdin.readline
n=int(input())
num=list(map(int,input().split()))
answer=[]
a=0
for i in range(n):
if(num[i]>0):
a+=num[i]
answer.append(a)
else:
a+=num[i]
if(a<0):
answer.append(num[i])
a=0
else:
answer.append(a)
print(max(answer))
input()
a=m=-1e9
for x in input().split():
a=max(0,a)+int(x)
m=max(m,a)
print(m)
N = int(input())
A = list(map(int,input().split()))
for i in range(1,N):
A[i] = max(A[i], A[i-1]+A[i])
print(max(A))
풀이
내코드는 또 dp를 쓰지 않아서 시간초과가 났다... 우선 첫번째 another answer 첫번째 코드는 dp는 아닌데 그냥 규칙을 찾아서 끼워맞췄다. 다음 으로 두번째와 3번째 코드는 비슷해보이는데 어떻게 저렇게 생각하지...제일 마지막 코드가 정석적인 dp로 푼 것같은데 너무 어려워보인다..
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #18511- 큰 수 구성하기[try_again] (0) | 2022.01.14 |
---|---|
[Python] 백준 #5568- 카드 놓기 (0) | 2022.01.14 |
[Python] 백준 #2407- 조합 (0) | 2022.01.11 |
[Python] 백준 #1806- 부분합[try_again] (0) | 2022.01.11 |
[Python] 백준 #15489- 파스칼 삼각형 (0) | 2022.01.07 |