알고리즘 연습/구현, 문자열
[Lv.1 / 프로그래머스 / 파이썬] 붕대 감기 (PCCP 기출문제 1번)
김세진
2023. 12. 7. 22:19
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
주어진 조건대로 시뮬레이션하여 결과를 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
반응형