Greedy
๋ค ๋ฒ์งธ ๋ฌธ์ ~!
์ด๊ฒ๋ ๊ฐ๋จํ ๋ฌธ์ ์๋ค.
import sys
sys.setrecursionlimit(10000000)
def next(curIdx, nextIdx, length):
if nextIdx >= length:
return 0
curCost, nextCost = cost[curIdx], cost[nextIdx]
curDis = distance[nextIdx - 1]
Cost = curCost * curDis
# ํ์ฌ ๊ฐ์ด ๋ ์ ๋ ดํ ๋
if curCost < nextCost:
return Cost + next(curIdx, nextIdx + 1, length)
else:
return Cost + next(nextIdx, nextIdx + 1, length)
N = int(input())
distance = list(map(int, input().split()))
cost = list(map(int, input().split()))
sumCost = next(0, 1, len(cost))
print(sumCost)
์ฌ๊ท๋ฅผ ์ด์ฉํด์ ํ์๋ค.
N
์ ๋ฒ์๊ฐ ๋งค์ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ฌ๊ท depth
๋ ๋งค์ฐ ํฌ๊ฒ ์ก์๋ค.
ํ์ฌ ๋์์ ๊ธฐ๋ฆ ๊ฐ
๋ณด๋ค ๊ธฐ๋ฆ ๊ฐ์ด ์ ๋ ดํ ๋์
์ ๋์ฐฉํ๊ธฐ ์ ๊น์ง ํ์ํ ๊ธฐ๋ฆ
์ ํ์ฌ ๋์
์์ ์ฑ์ฐ๋ฉด ์ต์ ๊ฐ๊ฒฉ
์ผ๋ก ๋์ฐฉํ ์ ์๋ค.
N = int(input())
distance = list(map(int, input().split()))
cost = list(map(int, input().split()))
won = 0
h = cost[0]
for i in range(len(distance)):
if cost[i] <= h:
h = cost[i]
won += h * distance[i]
print(won)
min
ํจ์๋ฅผ ์ด์ฉํด์ ํธ๋ ๋ฐฉ๋ฒ๋ ์๋ค.