[프로그래머스] Python [PCCE 기출문제] 1번 / 붕대 감기 Level1 - PCCE 기출문제

swb·2024년 2월 6일

프로그래머스

목록 보기
15/23

문제 바로가기

접근 방법

역시 예시를 직접 손으로 시현해 보면 이해가 빠르다.
고려해야 될 것들이 있다.

  1. 공격을 당한다면
  • 1) 체력에서 공격력 만큼 깎아주어야 하고
  • 2) 체력이 0이하면 -1을 return해야 한다.
  1. 공격을 당하지 않다면
  • 1) 연속 공격이 증가해야 하고
  • 2) 현재 체력이 증가해야 하고
    • 현재 체력이 증가했을 때 최대 체력을 넘는지 확인
  • 3) 연속 공격이 성공했을 때 체력이 증가해야 한다.
    • 현재 체력이 증가했을 때 최대 체력을 넘는지 확인

코드

def solution(bandage, health, attacks):
    nh = health
    last_attack = attacks[-1][0] + 1
    cnt = 0

    for i in range(1, last_attack):
        flag = False
        # 공격시간 확인
        for j in range(len(attacks)):
            if i == attacks[j][0]:
                nh -= attacks[j][1]
                cnt = 0
                flag = True

        # 공격없으면 연속공격 증가, 체력 증가
        if not flag:
            cnt += 1
            if health > nh:
                nh += bandage[1]
            if nh > health:
                nh = health
        # 연속 공격 성공하면 체력 추가 회복
        if cnt == bandage[0]:
            nh += bandage[2]
            cnt = 0
            if nh > health:
                nh = health

        if nh <= 0:
            nh = -1
            break

    return nh
profile
개발 시작

0개의 댓글