728x90
https://www.acmicpc.net/problem/13305
13305๋ฒ: ์ฃผ์ ์
ํ์ค ์ ๋ ฅ์ผ๋ก ๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ์ฒซ ๋ฒ์งธ ์ค์๋ ๋์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ N(2 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ ์ธ์ ํ ๋ ๋์๋ฅผ ์ฐ๊ฒฐํ๋ ๋๋ก์ ๊ธธ์ด๊ฐ ์ ์ผ ์ผ์ชฝ ๋๋ก๋ถํฐ N-1
www.acmicpc.net
๊ดํ ์ด๋ ต๊ฒ ์๊ฐํด์ ์๊ฐ๋ง ์ก์๋จน์ ๋ฌธ์ !
๋ด๋์ ์๊พธ DP ๋ฌธ์ ๋ก ๋ณด์ฌ์ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด์ง ์์๋ค ใ vใ
์ฝ๊ฒ ์๊ฐํ๋ฉด ์์ฃผ ์์ฃผ ์์ฃผ ๊ฐ๋จํ๋ค.
์ฐจ๋ฅผ ํ๊ณ ๊ฐ๋ค๊ฐ, ๊ธฐ๋ฆ๊ฐ์ด ์ ๋ ดํด์ง๋ฉด ๊ทธ ๋์์ ๋ค๋ฌ์ ์ฃผ์ ํ๋ค. ๋!
import sys
input = sys.stdin.readline
n = int(input()) #๋์์ ๊ฐ์
path_len = list(map(int,input().split())) #๋์ ๊ฐ ๋๋ก์ ๊ธธ์ด
oil_price = list(map(int,input().split())) #๋์๋ณ ๊ธฐ๋ฆ๊ฐ
path_len.insert(0,0);
cost=0 #์ด ๋น์ฉ
cur_price=int(1e9)
cur_path=0
for i in range(n):
#๊ฑฐ๋ฆฌ์ ๋ณด ๊ฐฑ์
cur_path += path_len[i]
#๊ธฐ๋ฆ๊ฐ์ด ์ ๋ ดํด์ง๋ฉด
if cur_price > oil_price[i]:
#์ง๊ธ๊น์ง์ ๋น์ฉํฉ์ ๋ํด์ค๋ค
cost += cur_path * cur_price
#ํ์ฌ ๊ธฐ๋ฆ๊ฐ ์ ๋ณด๋ฅผ ๊ฐฑ์
cur_price=oil_price[i]
#๊ฑฐ๋ฆฌ์ ๋ณด๋ ์ด๊ธฐํ
cur_path = 0
cost += cur_path * cur_price
print(cost)
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]1138๋ฒ: ํ ์ค๋ก ์๊ธฐ (0) | 2023.03.18 |
---|---|
[๋ฐฑ์ค]19941๋ฒ: ํ๋ฒ๊ฑฐ ๋ถ๋ฐฐ (0) | 2023.03.16 |
[๋ฐฑ์ค]1439๋ฒ: ๋ค์ง๊ธฐ (0) | 2023.03.01 |
[์ด์ฝํ ] ๋ชจํ๊ฐ ๊ธธ๋ (0) | 2023.02.22 |
[์ด์ฝํ ] ๊ณฑํ๊ธฐ ํน์ ๋ํ๊ธฐ (0) | 2023.02.22 |