반응형
    
    
    
  
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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
반응형
    
    
    
  '알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
| [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 |