나의 개발일지

[ 프로그래머스] PCCP 기출 문제 1번 [Python, 파이썬] 본문

프로그래머스

[ 프로그래머스] PCCP 기출 문제 1번 [Python, 파이썬]

YoonJuHan 2023. 11. 6. 18:58
  • 문제 : https://school.programmers.co.kr/learn/courses/19344/lessons/242258
  • 🔑 말 그대로 구현하기
    • 1초 단위로 계산을 했다.
    • 공격받는 시간이 되면 attacks리스트에서 빼내고 공격을 받는다.
      • 연속 성공 횟수 초기화
      • 죽으면 -1 리턴
    • 공격받는 시간이 아니라면 회복을 한다.
      • 초당 회복
      • 최대 체력 이상 넘어가지 않게 컨트롤
      • 연속 성공 횟수에 도달하면 추가 회복하고 횟수 초기화
    • 죽지 않고 살아 있다면 남은 HP를 리턴하면 끝 ✨

 

 

def solution(bandage, health, attacks):
      
    success = 0     # 연속 성공 횟수
    time = 1
    hp = health
    
    while attacks:
        if time == attacks[0][0]:       # 공격 받는 시간이 되면
            t, damage = attacks.pop(0)
            hp -= damage                # 데미지 받음
            success = 0                 # 연속 성공 횟수 초기화
            time += 1                   # 시간도 흐름
            if hp <= 0:                 # 죽었으면 끝
                return -1
        else:                           # 공격 받는 시간이 아니면
            hp += bandage[1]            # 초당 회복
            success += 1                # 연속 성공 횟수 증가
            time += 1                   # 시간 흐름

            if success == bandage[0]:   # 연속 성공 횟수가 다 차면
                hp += bandage[2]        # 추가 회복
                success = 0             # 연속 성공 횟수 초기화
        
            if hp > health:             # HP가 최대 체력 넘어가면
                hp = health             # 최대 최력으로 고정

    return hp
Comments