๐ก ์กฐ๊ฑด ๋ฐ ํ์ด
- ๋์์ ๊ฐ์
2 <= N <= 100000
- ๋์๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ ๊ธธ์ด๊ฐ
N-1
๊ฐ ์ฃผ์ด์ง๋ค.
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ํ ๋ฌธ์
- ์ ์ผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ์ต์ ๋น์ฉ์ ๊ณ์ฐ
- ์ด๋ ๋์์์ ๊ธฐ๋ฆ์ ๋ฃ์ด ์ด๋ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋น์ฉ์ด ์ ๋ ดํ์ง์ ๋ํด ๊ณ์ฐํ๋ฉด ๋๋ค.
- ์๋ธํ์คํฌ ์ ์๊ฐ ์ฃผ์ด์ง๋ค
1) 17์ ๋ชจ๋ ์ฃผ์ ์์ ๋ฆฌํฐ๋น ๊ฐ๊ฒฉ์ 1์
2) 41์ 2 <= N <= 1000
์ ์ผ ์ผ์ชฝ ๋์๋ถํฐ ์ ์ผ ์ค๋ฅธ์ชฝ ๋์๊น์ง์ ๊ฑฐ๋ฆฌ๋ ์ต๋ 10000,
๋ฆฌํฐ ๋น ๊ฐ๊ฒฉ์ ์ต๋ 10000
3) 42์ ์๋์ ์ ์ฝ์กฐ๊ฑด ์ด์ธ์ ์๋ฌด ์ ์ฝ์กฐ๊ฑด์ด ์๋ค.
๐ฅ ์์ค ์ฝ๋
from sys import stdin
k = int(stdin.readline())
dist = list(map(int, stdin.readline().split()))
cost = list(map(int, stdin.readline().split()))
res = 0
c = cost[0]
for i in range(k - 1):
if c > cost[i]:
c = cost[i]
res += c * dist[i]
print(res)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
4
2 3 1
5 2 4 1
์คํ๊ฒฐ๊ณผ
18
โจ๏ธ ๋ฌธ์ ํ์ด
- ๋๋ก์ ๊ธธ์ด๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
dist
์ฃผ์ ์์ ๋ฆฌํฐ๋น ๊ฐ๊ฒฉ์ ์ ์ฅํ ๋ฆฌ์คํธ cost
- ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ๋์์ ์ฃผ์ ์์ ๋ฆฌํฐ๋น ๊ฐ๊ฒฉ์ ๋ณ์
c
์ ๋ฃ์ด์ค๋ค.
k-1
๋ฐ๋ณต๋ฌธ์ ์คํํ์ฌ ์ฃผ์ ์์ ๋ฆฌํฐ ๋น ๊ฐ๊ฒฉ์ ์ํํ๋ค.
- ๋ง์ฝ ํ์ฌ ๊ณ์ฐ๋
c
๊ฐ i
๋ฒ์งธ ๋ฆฌํฐ ๋น ๊ฐ๊ฒฉ๋ณด๋ค ๋น์ธ๋ค๋ฉด c
๋ฅผ ๊ฐฑ์ ํ๋ค.
๊ทธ๊ฒ ์๋๋ผ๋ฉด, ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ res
์ ๋ฆฌํฐ ๋น ๊ฐ๊ฒฉ * i๋ฒ์งธ ๋๋ก์ ๊ธธ์ด
๋ฅผ ๋ํด์ค๋ค
๐พ ๋๋์
- ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ผ๊ณ ํด์ ์๋ดค๋ค๊ฐ ๋ก์ง์ด ํ์๊ฐ ๊ผฌ์ฌ์ ๊ณ ์์ ์ข ํ๋ค.
- ๋ฆฌ์คํธ๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํด ์ฌ์ฉํ๋ค๊ฐ ๋จธ๋ฆฌ๊ฐ ์๊ฐ ๋ณต์กํด์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋
ธ๋ ฅ์ ํด์ผ๊ฒ ๋ค.
- ๊ทธ๋ฆผ์ ๊ทธ๋ ค ์ฐจ๋ถํ ๋ก์ง์ ์๊ฐํ๊ณ ๊ตฌํํ๋ ์ต๊ด์ ๊ธธ๋ฌ์ผ๊ฒ ๋ค.