📖 PCCP 기출문제 > [PCCP 기출문제] 1번 / 붕대 감기

📖What I thought

  1. 붕대 감기할 때 체력
    • x(초당 회복 체력) * t(초)
    • 여기에다가 t초 연속으로 붕대 감기 성공 시 + y
  2. 공격 당할 때
    • 체력 데미지 만큼 체력 깎임
    • 붕대 감기 연속 성공 초기화
  • 시간만큼 루프를 돌지않고 공격 수만큼만 돌 수는 없을까? → 이전 공격과 현재 공격 시간 사이의 차이를 체크 그래야 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

  1. 이런 시간 관련 문제는 시간 전체를 루프 돌지 않아도 조건(?)만큼만 루프를 돌아 시간을 루프 안에서 따로 처리할 수도 있음

📖관련 지식