📖What I thought
- 붕대 감기할 때 체력
- x(초당 회복 체력) * t(초)
- 여기에다가 t초 연속으로 붕대 감기 성공 시 + y
- 공격 당할 때
- 체력 데미지 만큼 체력 깎임
- 붕대 감기 연속 성공 초기화
- 시간만큼 루프를 돌지않고 공격 수만큼만 돌 수는 없을까?
→ 이전 공격과 현재 공격 시간 사이의 차이를 체크 그래야 1번을 계산할 수 있음 (즉, 시간에 대한 정보를 공격 때마다 갱신해줘야 함)
- 그러면? 변수 하나 둬서 1로 시작하고 공격 때마다 공격+1초로 갱신해주기
- 연속 성공은 공격 시간과 (마지막 공격+1초)의 차만큼 성공했으므로 저 값을 t초로 나눠주기(그러면 연속 성공을 몇 번 성공했는지 알 수 있음)
- 최대 체력(100)이 넘으면 100으로 체력 바꿔주기
⭐️ 데미지 받기 전에 최대 체력 고쳐줘야 함 100-100은 죽는데 110-100은 안 죽어버려
📖풀이
📎구현
def solution(bandage, health, attacks):
t, x, y = bandage
now_health = health
sec = 1
for time, damage in attacks:
now_health += (time - sec) * x + ((time - sec)//t) * y
if now_health > health:
now_health = health
now_health -= damage
if now_health <= 0:
return -1
sec = time + 1
return now_health
📖What I learned
- 이런 시간 관련 문제는 시간 전체를 루프 돌지 않아도 조건(?)만큼만 루프를 돌아 시간을 루프 안에서 따로 처리할 수도 있음
📖관련 지식