https://school.programmers.co.kr/learn/courses/30/lessons/250137
붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다.
기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다.
몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니다.
당신은 붕대감기 기술의 정보, 캐릭터가 가진 최대 체력과 몬스터의 공격 패턴이 주어질 때 캐릭터가 끝까지 생존할 수 있는지 궁금합니다.
모든 공격이 끝난 직후 남은 체력을 return 하도록 solution 함수를 완성해 주세요. 만약 몬스터의 공격을 받고 캐릭터의 체력이 0 이하가 되어 죽는다면 -1을 return 해주세요.
회복 -> 공격 순으로 코드를 작성하면 된다.
def solution(bandage, health, attacks):
# bandage = t, x, y
# health = 최대 체력
# attack = t, damage
t, x, y = bandage
m_h = health
now = 0
for ti, da in attacks:
# 체력 회복
if now > 0:
r = ti - now - 1
health += x*r
# 추가 체력 회복, t초를 여러번 넘기면 계속 회복
if r >= t : health += y*int(r/t)
# 최대 체력을 넘기나
if health > m_h : health = m_h
now = ti
health -= da
if health <= 0:
return -1
# 남은 체력
return health