๐Ÿ“–Problem

๐Ÿ”Intuition

๐Ÿ”Approach

๐ŸšฉMy submission

โŒ์ฒซ๋ฒˆ์งธ ์‹œ๋„ โ†’ 17์ 

import sys
input = sys.stdin.readline

# ์ดˆ๊ธฐํ™”
n = int(input()) # n: ๋„์‹œ์˜ ๊ฐœ์ˆ˜
road = list(map(int, input().split())) # ๋„๋กœ์˜ ๊ธธ์ด
oil_price = list(map(int, input().split())) # ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ

current = road[0] * oil_price[0] # ํ˜„์žฌ ๊ธฐ๋ฆ„
good = road[0]
for i in range(1, len(road)):
    if road[i] * oil_price[i-1] <= road[i] * oil_price[i]:
        if road[i] * oil_price[i-1] <= road[i] * good:
            good = oil_price[i-1]

    else:
        if road[i] * oil_price[i] <= road[i] * good:
            good = oil_price[i]
    current += good * road[i]
print(current)

์ฃผ์œ ์†Œ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•ด์„œ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋–ค ์ฃผ์œ ์†Œ๋ฅผ ์ฃผ์œ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋กœ์ง์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์œผ๋‚˜ ๊ฒฐ๊ณผ๋Š” 17์ ์ด ๋‚˜์™”๋‹ค.

์™œ ์ด๊ฒŒ ๋ฌธ์ œ์ผ๊นŒ ํ–ˆ๋Š”๋ฐ, ๋‚ด ์ฝ”๋“œ๋Š” ๊ธฐ๋ฆ„์„ ์ฑ„์šฐ๋Š” ์‹œ์ ์—์„œ์˜ ์ตœ์ € ๊ฐ€๊ฒฉ์ด ์•„๋‹ˆ๋ผ ๊ฐ ๋„๋กœ์˜ ๊ธธ์ด์— ๋”ฐ๋ฅธ ๋น„์šฉ์„ ๋‹จ์ˆœํžˆ ๋น„๊ตํ•˜๊ณ  ์žˆ๊ณ , ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ตœ์†Œ ๊ฐ€๊ฒฉ์„ ์ถ”์ถœ์„ ํ–ˆ๋Š”๋ฐ ๊ธธ์ด๋ณด๋‹ค๋Š” ๋ฆฌํ„ฐ๋‹น ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ์ด ์ตœ์†Œ ๋น„์šฉ์„ ์ฐพ๋Š”๋ฐ ์ค‘์š”ํ•œ ์š”์†Œ์ธ ์ ์ด ์ฝ”๋“œ์— ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์•˜๋‹ค.

โœ…๋‘๋ฒˆ์งธ ์‹œ๋„ โ†’ 100์ 

๋”ฐ๋ผ์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ๋งค๋ฒˆ ์—ฐ์‚ฐํ•˜์ง€ ์•Š๊ณ  ํ˜„์žฌ ๋ฆฌํ„ฐ ๊ฐ€๊ฒฉ๊ณผ ๊ฐ€์žฅ ์ž‘์€ ์ฃผ์œ ์†Œ์˜ ๋ฆฌํ„ฐ ๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์œผ๋А ๋ฆฌํ„ฐ ๊ฐ€๊ฒฉ์„ ์ €์žฅํ•ด๋‘๊ณ , ์ด ๊ฐ€๊ฒฉ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ์ตœ์ข… ์—ฐ์‚ฐํ•œ๋‹ค.

  1. ๋„์‹œ์˜ ๊ฐœ์ˆ˜๋ฅผ n, ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ road ๋ฆฌ์ŠคํŠธ, ๊ฐ ๋„์‹œ์˜ ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ์„ oil_price ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ์„ ํ•˜๊ณ , ์ตœ์ € ๋น„์šฉ์ธ min_cost๋Š” 0์œผ๋กœ, ๋„์‹œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” min_price๋Š” ์ฒซ ๋ฒˆ์งธ ๋„์‹œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  2. ๊ฐ ๋„์‹œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ, ๋‹ค์Œ ๋„์‹œ๋กœ ์ด๋™ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ฆ„ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•œ๋‹ค,
    1. ํ˜„์žฌ ๋„์‹œ์—์„œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ๊ณผ ์ตœ์†Œ ๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ์ตœ์†Œ ๊ฐ€๊ฒฉ min_price๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.
    2. ์ตœ์ € ๋น„์šฉ min_cost์— ์ตœ์†Œ ๊ฐ€๊ฒฉ๊ณผ ํ˜„์žฌ ๋„๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋ˆ„์ ํ•˜์—ฌ ๊ณ„์‚ฐํ•œ๋‹ค.
  3. ์ตœ์ข… ๊ฒฐ๊ณผ์ธ min_cost๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
import sys
input = sys.stdin.readline

# ์ดˆ๊ธฐํ™”
n = int(input()) # n: ๋„์‹œ์˜ ๊ฐœ์ˆ˜
road = list(map(int, input().split())) # ๋„๋กœ์˜ ๊ธธ์ด
oil_price = list(map(int, input().split())) # ๋ฆฌํ„ฐ๋‹น ๊ฐ€๊ฒฉ

min_cost = 0 # ์ตœ์ € ๋น„์šฉ
min_price = oil_price[0] # ์ฒซ๋ฒˆ์งธ ๋„์‹œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ

for i in range(n - 1):
    if oil_price[i] < min_price:  # ํ˜„์žฌ ๋„์‹œ์—์„œ์˜ ๊ธฐ๋ฆ„ ๊ฐ€๊ฒฉ์ด ์ตœ์†Œ ๊ฐ€๊ฒฉ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ฐฑ์‹ 
        min_price = oil_price[i]
    min_cost += min_price * road[i] # ํ˜„์žฌ ๋„์‹œ์—์„œ ๋‹ค์Œ ๋„์‹œ๋กœ ์ด๋™ํ•  ๋•Œ ๋“œ๋Š” ๋น„์šฉ์„ ์ถ”๊ฐ€

print(min_cost)

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-07-26 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1.44.53.png