๋ฐฑ์ค 11501๋ฒ
https://www.acmicpc.net/problem/11501
๋ฌธ์
ํ๊ธฐ
์ฒซ ๋จ์ถ๋ฅผ ๊ต์ฅํ ์๋ชป ์ฑ์ด ๋ฌธ์ ์๋ค. ๋จ์ํ๊ฒ ์ฃผ์์ list๋ฅผ ์๋ถํฐ ์์ํด์
i์ i+1์ ๊ฐ์ ๋น๊ตํ๋ฉฐ ๋ฆฌ์คํธ์ ์ผ์ผ์ด ์ถ๊ฐํ๋ฉฐ i+1์ ๊ฐ์ด ๋ ์์ ๋
๊ฐ์ง๊ณ ์๋ ์ฃผ์์ ์ ๋ถ ํ์์ ์์ต์ ๋ง๋๋ ๊ต์ฅํ 1์ฐจ์์ ์ธ ์ฝ๋๋ฅผ ์งฐ๋ค.
ํ์ง๋ง ์ด๋ ๊ต์ฅํ ๋นํจ์จ์ ์ด๊ณ , ํ ์คํธ ์ผ์ด์ค๋ค์ ํต๊ณผํ์ง๋ง, ์ผ๋ถ ์๋ชป๋ ๋ถ๋ถ์ด
์๋์ง ํ๋ ธ์ต๋๋ค๊ฐ ๊ณ์ ๋์๋ค. ์์ ๋ฐ์์ ์ ํ์ด ํ์ํ๋ค๋ ์๊ฐ์ ํ๊ณ ,
๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด์ ์๊ฐํ๊ฒ ๋์๋ค.
๋ค์ง์ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ ์งธ ๊ฐ์ max๋ก ์ง์ ํด๋๊ณ , list๋ฅผ ๋๋ฉด์ i๊ฐ max๊ฐ๋ณด๋ค ํฌ๋ฉด max๋ฅผ ๊ฐฑ์ ํ๊ณ
๊ทธ๋ ์ง ์๋ค๋ฉด ์ฃผ์์ ํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ค.
๋จ์ง ๋ค์ง๊ธฐ๋ง ํ์ ๋ฟ์ธ๋ฐ, ๋ฌธ์ ๊ฐ ํจ์ฌ ์ฝ๊ฒ ํ๋ฆฌ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ ๊ต์ฅํ ์๋ผ๋ฉฐ
์๊ฐ๋ ๋น์ฝ์ ์ผ๋ก ์ค์ผ ์ ์์๋ค.
์ด๋ ๊ฒ ํ๋ฉด์๋ ์๋ชป๋ ํ์ด๋ผ๋ ์๊ฐ์ด ๋๋ ์๊ฐ์, ์ข ๋ ๊ณ์ฐ์ ์ธ ์๊ฐ์ ํ๋ ์ต๊ด์
๋ ๊ฐ์ง๋๋ก ๋ ธ๋ ฅํด์ผ ๊ฒ ๋ค๋ ์๊ฐ์ด ๋๋ ๋ฌธ์ ์๋ค.
๋์ ์๋ชป๋ ํ์ด
import sys
input = sys.stdin.readline
for _ in range(int(input())):
N = int(input())
li= list(map(int,input().split()))
# 1.์ฃผ์ ํ๋๋ฅผ ์ฐ๋ค.
# 2.์ํ๋ ๋งํผ ๊ฐ์ง๊ณ ์๋ ์ฃผ์์ ํ๋ค.
# 3.์๋ฌด๊ฒ๋ ์ํ๋ค.
# i์ i+1์ ๋น๊ต. i+1๊ณผ ๊ฐ์ด ๊ฐ๊ฑฐ๋ i+1์ด ๋ ํฌ๋ฉด ์ฃผ์์ ๊ตฌ๋งคํ๋ค.
# i+1์ ๊ฐ์ด ๋ ์์ผ๋ฉด ๊ฐ์ง๊ณ ์๋ ์ฃผ์์ ์ ๋ถ ํ๋ค.
buy_li = []
sell_li = []
for i in range(len(li)-1):
if li[i]<=li[i+1]: #๊ฐ๊ฑฐ๋ ์์ผ๋ฉด
buy_li.append(li[i]) #์ฃผ์ ๊ตฌ๋งค๋ฆฌ์คํธ์ ์ถ๊ฐ
else: #
k = ( li[i] * len(buy_li) ) - sum(buy_li) #ํด๋น ๋ ์ง์ ์ฃผ์์ ๊ฐ๊ฒฉ * (๊ตฌ๋งคํด๋์ ์ฃผ์์ list๊ธธ์ด) - ๊ตฌ๋งคํด๋์ ์ฃผ์๋ค์ ๊ฐ๊ฒฉ
sell_li.append(k) #์ผ๋ง ์ด๋๋ดค๋์ง ๋ฆฌ์คํธ์ ์ถ๊ฐ
buy_li = []
k=0
if (len(buy_li))!=0: # ๊ณ์ ๊ตฌ๋งค๋ง ํ๋ค๊ฐ ๋๋ฌ์ ๋์ ๊ฒฝ์ฐ์ ๋ํ ์์ธ์ฒ๋ฆฌ
k = ( li[-1] * len(buy_li) ) - sum(buy_li) #๋ง์ง๋ง ๋ ์ง์ ๊ฐ๊ฒฉ์ ๋ํด์ ์์ต์คํ
sell_li.append(k)
buy_li = []
k= 0
if sum(sell_li) <=0:
print(0)
else:
print(sum(sell_li))
๋์ ํ์ด
import sys
input = sys.stdin.readline
for _ in range(int(input())):
N = int(input())
li= list(map(int,input().split()))
result = 0 #๊ฒฐ๊ณผ๊ฐ
li.reverse() #๋ฆฌ์คํธ๋ฅผ ๋ค์ง๊ณ
max_li = li[0] #์ผ๋จ ๋งจ์์ ๊ฐ์ด ์ต๋๊ฐ
for i in li:
if i > max_li: #์ต๋๊ฐ ๊ฐฑ์
max_li = i
else:
result += (max_li) -i #์์ผ๋ฉด ํ๋ค.
print(result)