반응형
https://school.programmers.co.kr/learn/courses/30/lessons/250137
def solution(bandage, health, attacks):
answer = 0
#붕대 감기 기술의 시전 시간, 1초당 회복량, 추가 회복량을 담은 1차원 정수 배열 bandage
#최대 체력을 의미하는 정수 health
#몬스터의 공격 시간과 피해량을 담은 2차원 정수 배열 attacks
#[5, 1, 5] 30 [[2, 10], [9, 15], [10, 5], [11, 5]]
band_time = bandage[0]
hp_per = bandage[1]
hp_plus = bandage[2]
max_health = health
tmp = 0
for time, damage in attacks:
diff_time = time - tmp - 1 # 현재시간 - 이전시간 (시간차)
tmp = time # 이전시간 저장
health += (diff_time)*hp_per + ((diff_time)//band_time)*hp_plus # 체력증가 공식
if health > max_health: # 체력초과 방지
health = max_health
health = health - damage # 데미지 입음
if health <= 0: # 이하되면 죽음
return -1
return health
풀이
1. 시간을 초마다 계산하면서 회복량을 계산할 수 있지만 한번에 회복량을 계산하고자 하였음
2. diff_time을 계산해서 바로 초당 회복량과 연속 회복량 계산 / 연속 회복량 계산시 diff_time//band_time을 통해 초기화되는 것까지 고려해서 계산 가능
3. 체력 초과 방지 및 피가 0이하가 되면 종료
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/LV3/이분탐색] 입국검사 (0) | 2023.12.15 |
---|---|
[프로그래머스/LV2/구현] 호텔 대실 (0) | 2023.12.13 |
[프로그래머스/그래프 탐색/LV2] 무인도 여행 (0) | 2023.12.06 |
[BOJ/완전탐색] 14888 연산자 끼워넣기 (0) | 2023.09.19 |
[BOJ/완전탐색] 15686 치킨배달 (0) | 2023.09.19 |