deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

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

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

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

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm Problem > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[python] SWEA - 10804. ๋ฌธ์ž์—ด์˜ ๊ฑฐ์šธ์ƒ  (0) 2020.11.01
[python] ๋ฐฑ์ค€ - 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”  (0) 2020.10.31
[python] ๋ฐฑ์ค€ - 12865. ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ  (0) 2020.10.29
[python] ๋ฐฑ์ค€ - 1325. ํšจ์œจ์ ์ธ ํ•ดํ‚น  (0) 2020.10.28
[python] ๋ฐฑ์ค€ - 10773. ๊ด„ํ˜ธ  (0) 2020.10.27
    'Algorithm Problem/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [python] SWEA - 10804. ๋ฌธ์ž์—ด์˜ ๊ฑฐ์šธ์ƒ
    • [python] ๋ฐฑ์ค€ - 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”
    • [python] ๋ฐฑ์ค€ - 12865. ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ
    • [python] ๋ฐฑ์ค€ - 1325. ํšจ์œจ์ ์ธ ํ•ดํ‚น
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”