DevYoon
[๋ฐฑ์ค] 16434. ๋๋๊ณค ์ค ๋์ (Python) ๋ณธ๋ฌธ
link ๐ https://www.acmicpc.net/problem/16434
๐ ๋ชฌ์คํฐ ๋ฐฉ์ผ ๊ฒฝ์ฐ์ ํฌ์ ๋ฐฉ์ผ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ์๊ฐํด๋ณด์๋ค.
๐ ๋ชฌ์คํฐ ๋ฐฉ์ผ ๊ฒฝ์ฐ, ์ฉ์ฌ๊ฐ n๋ฒ ๊ณต๊ฒฉํ๋ฉด ๋๋๊ณค์ n-1๋ฒ ๊ณต๊ฒฉํ๋ค๋ ์ ์์ ์ฐฉ์ํ์ฌ
1๏ธโฃ ๋ชฌ์คํฐ์ ์๋ช ๋ ฅ์ด ์ฉ์ฌ์ ๊ณต๊ฒฉ๋ ฅ์ผ๋ก ๋ฑ ๋๋์ด์ง ๋๋ 1์ ๋นผ์ค๋ค
2๏ธโฃ ๋ชฌ์คํฐ์ ์๋ช ๋ ฅ์ด ์ฉ์ฌ์ ๊ณต๊ฒฉ๋ ฅ์ผ๋ก ๋ฑ ๋๋์ด์ง์ง ์์ ๋๋ 1์ ๋นผ์ฃผ์ง ์๋๋ค.
๐ ์์์ ๊ตฌํด์ง ๊ฐ์ ๋ชฌ์คํฐ์ ๊ณต๊ฒฉ๋ ฅ์ ๊ณฑํ๋ฉด ๋ฐ๋ฏธ์ง๊ฐ ๋์ค๊ณ , ์ด๋ฅผ ์ฉ์ฌ์ ํ์ฌ ์๋ช ๋ ฅ์ -๋ฅผ ๋ถ์ฌ ๋ํด์ค๋ค.
๐ ํฌ์ ๋ฐฉ์ ๊ฒฝ์ฐ, ํ๋ณต๋๋ ์๋ช ๋ ฅ์ ์ฉ์ฌ์ ํ์ฌ ์๋ช ๋ ฅ์ ๋ํด์ค๋ค.
๐ ์ด ๋, ํ๋ณต๋ ์๋ช ๋ ฅ์ด ์ต๋ ์๋ช ๋ ฅ๋ณด๋ค ํฌ๋ฉด ์ต๋ ์๋ช ๋ ฅ์ด ๋๋ค๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก, ์ดํ ์๋ช ๋ ฅ์ด +์ผ ๊ฒฝ์ฐ 0์ผ๋ก ๋ง๋ค์ด ์ค๋ค.
๐ ์ด์์์ด์ผ ํ๋ฏ๋ก +1์ ๋ํด ์ถ๋ ฅํด์ค๋ค!
import sys
N, A = map(int, sys.stdin.readline().split())
res = 0
damage = 0
now = 0
for idx in range(N):
t, a, h = map(int, sys.stdin.readline().split())
if t == 1: # ๋ชฌ์คํฐ๋ฐฉ
if h % A == 0: # ๋ฑ ๋๋ ๋จ์ด์ง๋ฉด
damage = -1*(((h//A)-1)*a) # 1 ๋นผ์ฃผ๊ธฐ (์ฉ์ฌ๊ฐ n๋ฒ ๊ณต๊ฒฉํ๋ฉด ๋ชฌ์คํฐ๋ n-1๋ฒ ๊ณต๊ฒฉํ๋ฏ๋ก)
else:
damage = -1*((h//A)*a)
elif t == 2: # ํฌ์
๋ฐฉ์ด๋ฉด
A += a # ๊ณต๊ฒฉ๋ ฅ ์ฆ๊ฐ
if t == 1:
now += damage
elif t == 2:
now += h
if now > 0: # ํ๋ณต๋ ์๋ช
๋ ฅ์ด ์ต๋ ์๋ช
๋ ฅ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ํ์ฌ ์๋ช
๋ ฅ == ์ต๋ ์๋ช
๋ ฅ
now = 0
res = max(res, abs(now)) # ํ์ํ ์๋ช
๋ ฅ ๋น๊ต
print(res+1) # ์ด์ ์์ด์ผ ํ๋ฏ๋ก +1