[BOJ][๐ŸŸก5][๋ฐฑ์ค€#14719] ๋น—๋ฌผ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #14719


๋ฌธ์ œ

2์ฐจ์› ์„ธ๊ณ„์— ๋ธ”๋ก์ด ์Œ“์—ฌ์žˆ๋‹ค. ๋น„๊ฐ€ ์˜ค๋ฉด ๋ธ”๋ก ์‚ฌ์ด์— ๋น—๋ฌผ์ด ๊ณ ์ธ๋‹ค.

๋น„๋Š” ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ์˜จ๋‹ค. ๊ณ ์ด๋Š” ๋น—๋ฌผ์˜ ์ด๋Ÿ‰์€ ์–ผ๋งˆ์ผ๊นŒ?


์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” 2์ฐจ์› ์„ธ๊ณ„์˜ ์„ธ๋กœ ๊ธธ์ด H๊ณผ 2์ฐจ์› ์„ธ๊ณ„์˜ ๊ฐ€๋กœ ๊ธธ์ด W๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค H, W โ‰ค 500) ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ธ”๋ก์ด ์Œ“์ธ ๋†’์ด๋ฅผ ์˜๋ฏธํ•˜๋Š” 0์ด์ƒ H์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ 2์ฐจ์› ์„ธ๊ณ„์˜ ๋งจ ์™ผ์ชฝ ์œ„์น˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ W๊ฐœ ์ฃผ์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ธ”๋ก ๋‚ด๋ถ€์˜ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธธ ์ˆ˜ ์—†๋‹ค. ๋˜ 2์ฐจ์› ์„ธ๊ณ„์˜ ๋ฐ”๋‹ฅ์€ ํ•ญ์ƒ ๋ง‰ํ˜€์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ๋„ ์ข‹๋‹ค.


์ถœ๋ ฅ

2์ฐจ์› ์„ธ๊ณ„์—์„œ๋Š” ํ•œ ์นธ์˜ ์šฉ๋Ÿ‰์€ 1์ด๋‹ค. ๊ณ ์ด๋Š” ๋น—๋ฌผ์˜ ์ด๋Ÿ‰์„ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋น—๋ฌผ์ด ์ „ํ˜€ ๊ณ ์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์„ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.


์˜ˆ์ œ

์˜ˆ์ œ 1

์ž…๋ ฅ

4 4
3 0 1 4


์ถœ๋ ฅ

5


์˜ˆ์ œ 2

์ž…๋ ฅ

4 8
3 1 2 3 4 1 1 2


์ถœ๋ ฅ

5


์˜ˆ์ œ 3

์ž…๋ ฅ

3 5
0 0 0 2 0


์ถœ๋ ฅ

0


My Sol

import sys
input = sys.stdin.readline

H, W = map(int, input().split())
heights = list(map(int, input().split()))

# ์ตœ๋Œ€ ๋†’์ด ๊ณ„์‚ฐ
max_h = max(heights)

# ์ตœ๋Œ€ ๋„“์ด ๊ณ„์‚ฐ
# ์•ž์—์„œ๋ถ€ํ„ฐ ์ตœ๋Œ€ ๋†’์ด๊นŒ์ง€ ๋ˆ„์ 
ssum = 0
si = 0
cur_h = 0
while heights[si] < max_h:
    cur_h = max(cur_h, heights[si])
    ssum += cur_h
    si += 1

# ๋’ค์—์„œ๋ถ€ํ„ฐ ์ตœ๋Œ€ ๋†’์ด๊นŒ์ง€ ๋ˆ„์ 
ei = W-1
cur_h = 0
while heights[ei] < max_h:
    cur_h = max(cur_h, heights[ei])
    ssum += cur_h
    ei -= 1

# ์ตœ๋Œ€๋†’์ด๊ตฌ๊ฐ„ ๋ˆ„์ 
ssum += (ei-si+1)*max_h

print(ssum - sum(heights))

์ „์ฒด ๊ณต๊ฐ„์„ 3๋“ฑ๋ถ„ํ•˜์—ฌ ๋น„๊ฐ€ ๊ณ ์˜€์„ ๊ฒฝ์šฐ์˜ ๋ฉด์ ์„ ๊ณ„์‚ฐํ•˜๊ณ , ์ด๋ฅผ ์‹ค์ œ ๋ธ”๋ก์˜ ๋ฉด์ ์œผ๋กœ ๋นผ๋ฉด ๋น„์˜ ๋ฉด์ ๋งŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ธ”๋ก์˜ ์ตœ๋Œ€ ๋†’์ด๋ฅผ ๊ตฌํ•˜๊ณ , ์•ž์—์„œ๋ถ€ํ„ฐ ๋ธ”๋ก์˜ ์ตœ๋Œ€๋†’์ด์— ๋‹ค๋‹ค๋ฅผ ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ๋†’์ด์™€ ์ด์ „ ์ตœ๋Œ€ ๋†’์ด๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ๊ฐ’์„ ๊ณ„์† ๋ˆ„์ ํ•˜๋ฉฐ index๋ฅผ ๋†’์—ฌ๊ฐ„๋‹ค. ๋’ค์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ index ์‚ฌ์ด์˜ ๊ณต๊ฐ„์— ์ตœ๋Œ€๋†’์ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ์–‘์ชฝ์—์„œ ์ตœ๋Œ€ ๋†’์ด์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด, ๊ทธ ์‚ฌ์ด์˜ ๊ณต๊ฐ„์€ ๋ชจ๋‘ ์ตœ๋Œ€๋†’์ด์™€ ์ธ๋ฑ์Šค ์ฐจ์˜ ๊ณฑ์œผ๋กœ ๋ณด์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ๋”ํ•ด์ค€๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!


๋ชจ๋ฒ”๋‹ต์•ˆ

์ถœ์ฒ˜

h, w = map(int, input().split())
world = list(map(int, input().split()))

ans = 0
for i in range(1, w - 1):
    left_max = max(world[:i])
    right_max = max(world[i+1:])

    compare = min(left_max, right_max)

    if world[i] < compare:
        ans += compare - world[i]

print(ans)

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

์ด๋ ‡๊ฒŒ๋„ ํ’€ ์ˆ˜ ์žˆ๊ฒ ์œผ๋‚˜ W๊ฐ€ ์ปค์ง€๋ฉด ๋งค๋ฒˆ max๋ฅผ ๊ตฌํ•˜๋Š” ๋กœ์ง ์ž์ฒด๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ , ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต์ด ๋” ๋งŽ์ด ๋ฐ˜๋ณต๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์—ฐ์‚ฐ์‹œ๊ฐ„์ด ๋ชน์‹œ ๋†’์•„์งˆ ๊ฒƒ์ด๋‹ค.

์ข‹์€ ํ’€์ด๋ผ๊ณ  ๋ณด๊ธฐ์—๋Š” ์•„์‰ฝ๊ณ  ์งง๊ฒŒ ์ž˜ ํ’€์–ด๋‚ธ ์ฝ”๋“œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ