-
[SW Expert] 1859번_백만장자프로젝트Study/알고리즘 2020. 4. 25. 16:48
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
처음엔 0번째 인덱스부터 시작하여 최대를 찾고 어쩌고의 방법을 생각해봤으나 누가봐도 시간초과...
(안 날 수도 있지만 꽤나 긴 코드를 짜야할 것이다.)
배열의 끝에서 접근할 생각만 해낸다면 어렵지 않게 풀 수 있는 문제였다.
for t in range(int(input())): d = int(input()) days = list(map(int,input().split())) cnt = 0; accum = 0; ans=0; price = days[-1] for day in days[-2::-1]: if day<price: cnt += 1 accum += day else: ans += price*cnt - accum price = day cnt = 0 ; accum = 0 if cnt>=1: ans += price*cnt - accum print("#{0} {1}".format(t+1,ans))
변수 설명을 덧붙이자면 price는 팔 가격, cnt는 파는 물건의 개수, accum은 파는 물건의 가격 누적값이다.
'Study > 알고리즘' 카테고리의 다른 글
[SW Expert] 1926번_간단한369게임 (0) 2020.07.08 [SW Expert] 1204번_최빈수구하기 (0) 2020.04.25 [백준] 16194번_카드구매하기2 (0) 2020.03.18 11052번_카드구매하기 (0) 2020.03.18 [백준] 15988번_1,2,3더하기3 (0) 2020.03.11