반응형
풀이
주어진 조건대로 시뮬레이션하여 결과를 return 하는 문제이다.
마지막 공격 시간을 배열에서 구해 for문으로 초 단위로 순회하며 시뮬레이션 하며 해결했다.
attacks 배열을 딕셔너리 형태로 변형하여 시간 복잡도를 확보하도록 하자.
def solution(bandage, health, attacks):
t, x, y = bandage
max_health = health
end_time = attacks[-1][0]
attacks = {attack[0]:attack[1] for attack in attacks}
cur_t = 0
cur_health = health
for i in range(end_time + 1):
# 공격
if i in attacks:
cur_t = 0
cur_health -= attacks[i]
# 사망
if cur_health <= 0:
return -1
continue
# 공격받지 않음
cur_t += 1
cur_health += x
# 추가 회복
if cur_t == t:
cur_health += y
cur_t = 0
cur_health = min(cur_health, max_health)
return cur_health
반응형
'알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
[Lv.1 / 프로그래머스 / 파이썬] 가장 많이 받은 선물 (2024 KAKAO WINTER INTERNSHIP) (0) | 2024.03.24 |
---|---|
[🥈5 / 백준 4108 / 파이썬] 지뢰찾기 (1) | 2024.01.07 |
[🥉2 / 백준 9243 / 파이썬] 파일 완전 삭제 (0) | 2023.10.15 |
[🥈5 / 백준 25206 / 파이썬] 너의 평점은 (2) | 2023.05.23 |
[Lv.2 / 프로그래머스 / 파이썬] 덧칠하기 (0) | 2023.03.14 |