Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 14719. ๋น—๋ฌผ

deo2kim 2020. 10. 30. 09:43
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • G5 | ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜

๋ฉฐ์น  ์ „ nhn ์ฝ”ํ…Œ ๋ฌธ์ œ๋ž‘ ๋น„์Šทํ•œ ๋ฌธ์ œ.

๊ทธ ๋•Œ๋Š” ์ž๋ฐ”๋กœ ํ’€์—ˆ๊ธฐ๋„ ํ•˜๊ณ , ๋” ๋ณต์žกํ•˜๊ฒŒ ํ‘ผ๊ฑฐ๊ฐ™๋‹ค.

๋”ฑํžˆ ์–ด๋ ค์šด ๊ธฐ์ˆ ์„ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๋‹ค.

  1. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ์ž์‹ ๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ธ”๋Ÿญ์„ ์ฐพ๋Š”๋‹ค.
  2. ๊ฐ€๋Š” ์ค‘์— ์ž์‹ ๋ณด๋‹ค ๋‚ฎ์ง€๋งŒ๊ฐ€์žฅ ํฐ ๋†ˆ์„ ์ฐœํ•ด ๋†“๋Š”๋‹ค.
  3. ์œ„์˜ ๊ณผ์ •์ด ๋๋‚˜๋ฉด ์–‘์ชฝ์˜ ๋ธ”๋Ÿญ์ค‘ ๋‚ฎ์€ ๋ธ”๋Ÿญ ๋งŒํผ์˜ ๋น—๋ฌผ์„ ์‚ฌ์ด์˜ ๋ธ”๋Ÿญ์— ์ฑ„์šด๋‹ค.

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

def find_block(x: int) -> int:
    # ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ์ž์‹ ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ธ”๋Ÿญ์„ ์ฐพ๋Š”๋‹ค.
    # ๊ฐ€๋Š” ์ค‘์— ์ž์‹ ๋ณด๋‹ค ์ž‘์ง€๋งŒ ๊ทธ ์ค‘์— ๊ฐ€์žฅ ํฐ ๋†ˆ์„ ์ฐœํ•ด ๋†“๋Š”๋‹ค.
    max_block = [0, 0]
    for j in range(x + 1, W):
        if block[j] >= block[x]:
            return j

        if max_block[1] <= block[j]:
            max_block[1] = block[j]
            max_block[0] = j

    return max_block[0]


def fill_rainwater(x: int, y: int) -> int:
    # ์ž์‹ ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฐ๋†ˆ์ด ์—†์œผ๋ฉด ์ฐœํ•ด๋†“์€ ๋…€์„์˜ ๋†’์ด๋งŒํฐ ๋ฌผ์„ ์ฑ„์šด๋‹ค.
    # ์ž์‹ ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฐ๋†ˆ์ด ์žˆ์œผ๋ฉด ์ž์‹ ์˜ ๋†’์ด๋งŒํผ ๋ฌผ์„ ์ฑ„์šด๋‹ค.
    rainwater = min(block[x], block[y])
    cnt = 0
    for j in range(x + 1, y):
        cnt += rainwater - block[j]
        block[j] = rainwater

    return cnt


if __name__ == '__main__':
    H, W = map(int, input().split())  # ์„ธ๋กœ ๊ฐ€๋กœ
    block = list(map(int, input().split()))
    answer = 0

    i = 0
    while i < W - 1:
        b = find_block(i)
        answer += fill_rainwater(i, b)
        i = b
    print(answer)

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/14719

 

14719๋ฒˆ: ๋น—๋ฌผ

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

www.acmicpc.net

๋ฐ˜์‘ํ˜•