변경 전
def earn(a,b=[]):
earning = 0
for i in range(a):
maxx = max(b[i:])
if maxx != b[i]: earning = earning + (maxx - b[i])
return earning
t = int(input())
ans = []
for i in range(t):
case = int(input())
lst = list(map(int,input().split()))
earning = earn(case,lst)
ans.append(earning)
for j in range(t):
print("#%d" % (j+1), ans[j])
시간 초과가 떠서 코드를 일부 수정
변경 후
t = int(input())
ans = []
for i in range(t):
case = int(input())
lst = list(map(int,input().split()))
earning = 0
maxx = lst[case-1]
for j in range((case-1),0,-1):
if maxx > lst[j-1]:
earning = earning + (maxx - lst[j-1])
else: maxx = lst[j-1]
ans.append(earning)
for k in range(t):
print("#%d" % (k+1), ans[k])
뒤에서부터 검색하면 max를 한번 돌때마다 전체를 검색할 필요가 없어짐
'problem solving' 카테고리의 다른 글
1979. 어디에 단어가 들어갈 수 있을까 (0) | 2019.09.08 |
---|---|
2001. 파리 퇴치 (0) | 2019.09.07 |
2005. 파스칼의 삼각형 (0) | 2019.09.07 |
2007. 패턴 마디의 길이 (0) | 2019.09.07 |
1926. 간단한 369 게임 (0) | 2019.09.07 |
댓글