문제 링크
풀이 과정
전체 코드
def solution(bandage, health, attacks):
'''
bandage: [시전 시간, 초당 회복량, 추가 회복량]
health: 최대 체력
attcks: [공격 시간, 피해량]
'''
answer = health # 현재 체력
max_time = attacks[-1][0] # 마지막 공격 시간
cur_time = 1
success = 0 # 다음 공격까지 회복 시간
attack_dict = {attack_info[0]: attack_info[1] for attack_info in attacks} # 공격 사전
while cur_time <= max_time:
if cur_time not in attack_dict: # 해당 시간에 공격을 받지 않으면 -> 회복
success += 1
if success >= bandage[0]:
answer = min(answer+bandage[1]+bandage[2], health)
success = 0
else:
answer = min(answer+bandage[1], health)
else: # 공격 받을 때
success = 0
answer -= attack_dict[cur_time]
if answer <= 0: # 현재 체력이 0 이하인가?
return -1
cur_time += 1
return answer
Python
복사