ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ ๊ทผ๋ฒ์ ์๊ฐํ๊ธฐ๊น์ง ์๊ฐ์ด ๊ฑธ๋ ธ์ผ๋ฉฐ, ๋ค์ ์ด๋ ค์ ๋ค. ๋ฌธ์ ์ ํด๋ต์ ๊ฐ ๋ง์ ๋ณ๋ก ์ถ๋ฐ์ง ๋์ฐฉ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ถ๋ฐ ๊ฐ๋ฅํ ์์ ์ง์์ ์ผ๋ก ํ์ธํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- ๋ง์ ๋ณ๋ก ์ค์ ์ ์๋ ์ต๋ ๋ฐ์ค์ ์์ ํธ๋ญ์ ์ฉ๋์ผ๋ก ์ด๊ธฐํํ๋ค.
- ์ ๋ ฅ๋ ๊ฐ์ ๋์ฐฉ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค
- ์ ๋ ฅ๋ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๋๋ฉฐ, ์ถ๋ฐ์ง ๋์ฐฉ์ง์ ์ ์ฌ ๊ฐ๋ฅ๋๊ณผ ๋ฐ์ค์ ์์ ๋น๊ตํ์ฌ ์ฒ๋ฆฌํ๋ค.
- ์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ณตํ๋ฉด ์๊ตฌํ๋ ๋ต์ ์ฐพ์ ์ ์๋ค.
์ฝ๋
from sys import stdin
if __name__ == "__main__":
N, C = map(int, stdin.readline().split())
M = int(stdin.readline())
info = sorted([list(map(int, stdin.readline().split())) for _ in range(M)], key= lambda x: x[1])
answer = 0
village = [C] * N
for start, end, box in info:
# list ์ธ๋ฑ์ค์ ๋ง๊ฒ ๋ณํ
start -= 1
end -= 1
# ์ต์ ์ ์ฌ๋ ์ ํ
load = min(village[start:end])
if not load:
continue
# ์ ์ฌ ๊ฐ๋ฅํ ์๋ณด๋ค ํฐ ๊ฒฝ์ฐ, ์ ์ฌ ๊ฐ๋ฅํ ์๋ง
send = box if box <= load else load
for idx in range(start, end):
village[idx] -= send
answer += send
print(answer)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋ (0) | 2021.03.31 |
---|---|
๋ฐฑ์ค: 17140 ์ด์ฐจ์ ๋ฐฐ์ด๊ณผ ์ฐ์ฐ (0) | 2021.03.28 |
๋ฐฑ์ค: 2141 ์ฐ์ฒด๊ตญ (0) | 2021.03.19 |
๋ฐฑ์ค: 11000 ๊ฐ์์ค ๋ฐฐ์ (0) | 2021.03.15 |
๋ฐฑ์ค: 16953 A โ B (0) | 2021.03.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ