알고리즘/프로그래머스

[PCCP 기출문제] 1번 / 붕대 감기 - Python/JavaScript

Dev. Dong 2025. 1. 6. 20:58

문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/250137?language=javascript

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 간단 요약]

1. 붕대 감기 기술은 매초 x만큼 체력 회복 / t초 연속 회복 시 y만큼 추가 회복

2. 몬스터는 특정 시간 때 데미지를 입혀 체력을 감소

3. 붕대 감기 기술은 몬스터 공격 시간에는 사용 불가

4. 몬스터의 모든 공격이 끝났을때 남은 체력을 구하는 구현 문제

 

[문제 해결 방안]

- 단순 구현 문제로 조건 분기를 통해 문제 해결

 

[문제 해결 코드 - Python]

def solution(bandage, health, attacks):
    answer = 0
    attack_chk = 0
    bandage_chk = 0
    max_health = health
    for stage_time in range(attacks[-1][0]+1):
        if attacks[attack_chk][0] == stage_time:
            health -= attacks[attack_chk][1]
            if health < 1 :
                return -1
            bandage_chk = 0
            attack_chk += 1
        else:
            bandage_chk += 1
            health = min(max_health, health+bandage[1])
            if bandage_chk == bandage[0]:
                health = min(max_health, health+bandage[2])
                bandage_chk = 0
    return health

 

[문제 해결 코드 - JavaScript]

function solution(bandage, health, attacks) {
    let attack_chk = 0;
    let bandage_chk = 0;
    const max_health = health
    for (stage_time=0; stage_time< attacks[attacks.length-1][0]+1; stage_time++) {
        if (attacks[attack_chk][0] === stage_time) {
            health -= attacks[attack_chk][1]            
            if (health < 1) {
                return -1
            }
            bandage_chk = 0;
            attack_chk += 1
        } else {
            bandage_chk += 1
            health = Math.min(max_health, health+bandage[1])
            if (bandage_chk === bandage[0]) {
                health = Math.min(max_health, health + bandage[2])
                bandage_chk = 0
            }
        }
    }
    return health;
}