1. ๋ฌธ์ ์ค๋ช
์ด๋ค ๊ฒ์์๋ ๋ถ๋ ๊ฐ๊ธฐ๋ผ๋ ๊ธฐ์ ์ด ์์ต๋๋ค.
๋ถ๋ ๊ฐ๊ธฐ๋ t์ด ๋์ ๋ถ๋๋ฅผ ๊ฐ์ผ๋ฉด์ 1์ด๋ง๋ค x๋งํผ์ ์ฒด๋ ฅ์ ํ๋ณตํฉ๋๋ค. t์ด ์ฐ์์ผ๋ก ๋ถ๋๋ฅผ ๊ฐ๋ ๋ฐ ์ฑ๊ณตํ๋ค๋ฉด y๋งํผ์ ์ฒด๋ ฅ์ ์ถ๊ฐ๋ก ํ๋ณตํฉ๋๋ค. ๊ฒ์ ์บ๋ฆญํฐ์๋ ์ต๋ ์ฒด๋ ฅ์ด ์กด์ฌํด ํ์ฌ ์ฒด๋ ฅ์ด ์ต๋ ์ฒด๋ ฅ๋ณด๋ค ์ปค์ง๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ์ ์ ์ฐ๋ ๋์ค ๋ชฌ์คํฐ์๊ฒ ๊ณต๊ฒฉ์ ๋นํ๋ฉด ๊ธฐ์ ์ด ์ทจ์๋๊ณ , ๊ณต๊ฒฉ์ ๋นํ๋ ์๊ฐ์๋ ์ฒด๋ ฅ์ ํ๋ณตํ ์ ์์ต๋๋ค. ๋ชฌ์คํฐ์๊ฒ ๊ณต๊ฒฉ๋นํด ๊ธฐ์ ์ด ์ทจ์๋นํ๊ฑฐ๋ ๊ธฐ์ ์ด ๋๋๋ฉด ๊ทธ ์ฆ์ ๋ถ๋ ๊ฐ๊ธฐ๋ฅผ ๋ค์ ์ฌ์ฉํ๋ฉฐ, ์ฐ์ ์ฑ๊ณต ์๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
๋ชฌ์คํฐ์ ๊ณต๊ฒฉ์ ๋ฐ์ผ๋ฉด ์ ํด์ง ํผํด๋๋งํผ ํ์ฌ ์ฒด๋ ฅ์ด ์ค์ด๋ญ๋๋ค. ์ด๋, ํ์ฌ ์ฒด๋ ฅ์ด 0 ์ดํ๊ฐ ๋๋ฉด ์บ๋ฆญํฐ๊ฐ ์ฃฝ์ผ๋ฉฐ ๋ ์ด์ ์ฒด๋ ฅ์ ํ๋ณตํ ์ ์์ต๋๋ค.
๋น์ ์ ๋ถ๋๊ฐ๊ธฐ ๊ธฐ์ ์ ์ ๋ณด, ์บ๋ฆญํฐ๊ฐ ๊ฐ์ง ์ต๋ ์ฒด๋ ฅ๊ณผ ๋ชฌ์คํฐ์ ๊ณต๊ฒฉ ํจํด์ด ์ฃผ์ด์ง ๋ ์บ๋ฆญํฐ๊ฐ ๋๊น์ง ์์กดํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ถ๋ ๊ฐ๊ธฐ ๊ธฐ์ ์ ์์ ์๊ฐ, 1์ด๋น ํ๋ณต๋, ์ถ๊ฐ ํ๋ณต๋์ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด bandage์ ์ต๋ ์ฒด๋ ฅ์ ์๋ฏธํ๋ ์ ์ health, ๋ชฌ์คํฐ์ ๊ณต๊ฒฉ ์๊ฐ๊ณผ ํผํด๋์ ๋ด์ 2์ฐจ์ ์ ์ ๋ฐฐ์ด attacks๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ชจ๋ ๊ณต๊ฒฉ์ด ๋๋ ์งํ ๋จ์ ์ฒด๋ ฅ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ๋ง์ฝ ๋ชฌ์คํฐ์ ๊ณต๊ฒฉ์ ๋ฐ๊ณ ์บ๋ฆญํฐ์ ์ฒด๋ ฅ์ด 0 ์ดํ๊ฐ ๋์ด ์ฃฝ๋๋ค๋ฉด -1์ return ํด์ฃผ์ธ์.
์ ํ์ฌํญ
- bandage๋ [์์ ์๊ฐ, ์ด๋น ํ๋ณต๋, ์ถ๊ฐ ํ๋ณต๋] ํํ์ ๊ธธ์ด๊ฐ 3์ธ ์ ์ ๋ฐฐ์ด์
๋๋ค.
- 1 ≤ ์์ ์๊ฐ = t ≤ 50
- 1 ≤ ์ด๋น ํ๋ณต๋ = x ≤ 100
- 1 ≤ ์ถ๊ฐ ํ๋ณต๋ = y ≤ 100
- 1 ≤ health ≤ 1,000
- 1 ≤ attacks์ ๊ธธ์ด ≤ 100
- attacks[i]๋ [๊ณต๊ฒฉ ์๊ฐ, ํผํด๋] ํํ์ ๊ธธ์ด๊ฐ 2์ธ ์ ์ ๋ฐฐ์ด์ ๋๋ค.
- attacks๋ ๊ณต๊ฒฉ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋ ์ํ์ ๋๋ค.
- attacks์ ๊ณต๊ฒฉ ์๊ฐ์ ๋ชจ๋ ๋ค๋ฆ ๋๋ค.
- 1 ≤ ๊ณต๊ฒฉ ์๊ฐ ≤ 1,000
- 1 ≤ ํผํด๋ ≤ 100
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
def solution(bandage, health, attacks):
now_health = health # ํ์ฌ ์ฒด๋ ฅ
t = bandage[0] # ๊ธฐ์ ์๊ฐ
x = bandage[1] # ํ๋ณต๋
y = bandage[2] # ์ถ๊ฐ ํ๋ณต๋
for c, nxt in zip(attacks, attacks[1:]): # ๊ณต๊ฒฉ๋ง๋ค ์ฒดํฌ
now_health -= c[1] # ๊ณต๊ฒฉ๋๋งํผ ์ฒด๋ ฅ ๊ฐ์
if now_health < 1:
return -1
# ๋ถ๋ ๊ฐ๊ธฐ
if 1 < nxt[0] - c[0]: # ๋ค์ ๊ณต๊ฒฉ - ํ์ฌ ๊ณต๊ฒฉ ์๊ฐ ์ฐจ์ด ์์ ๋ = ํ๋ณต ์๊ฐ ์กด์ฌ
if now_health < health:
now_health += x * (nxt[0] - c[0] - 1)
now_health += ((nxt[0] - c[0] - 1) // t) * y
if now_health > health: # ์ต๋ ์ฒด๋ ฅ ๋์ ๊ฒฝ์ฐ
now_health = health
# ๋ง์ง๋ง ๊ณต๊ฒฉ
now_health -= attacks[-1][1] # ๊ณต๊ฒฉ๋๋งํผ ์ฒด๋ ฅ ๊ฐ์
if now_health < 1:
return -1
return now_health