[프로그래머스] Level 1 붕대 감기 - 구현 (Javascript, Python3)

Jun·2025년 3월 6일

알고리즘

목록 보기
10/19

문제 링크

바로가기

문제 풀이

JS

function solution(bandage, health, attacks) {
    let answer = health;
    const turn = attacks[attacks.length - 1][0];
    
    let cnt = 0;
    for(let i = 0; i < turn; ++i) {
        if (i + 1 === attacks[0][0]) {
            answer -= attacks[0][1];
            cnt = 0;
            attacks.shift();
        } else{
            cnt++;
            answer += bandage[1];
            
            if(cnt === bandage[0]) {
                answer += bandage[2];
                cnt = 0;
            }
            
            if(answer >= health) answer = health;
        }
        
        if(answer <= 0) return -1;
    }
    return answer;
}

PY

def solution(bandage, health, attacks):
    answer = health
    turn = attacks[len(attacks) - 1][0]
    
    cnt = 0
    for i in range(1, turn + 1):
        if i == attacks[0][0]:
            answer -= attacks[0][1]
            cnt = 0
            del attacks[0]
        else:
            cnt += 1
            answer += bandage[1]
            if cnt == bandage[0]:
                answer += bandage[2]
                cnt = 0
            if answer > health: answer = health
        
        if answer <= 0: return -1
    
    return answer

풀이

단순 구현 문제이다.
최대한 반복하는 횟수를 줄여보고 싶었는데 나의 머리로는 잘 생각이 안나서
공격이 끝나는 횟수만큼 한 턴씩 움직이게끔 구현하였다..

처리만 잘해주면 공격하는 횟수만큼만 돌면 될 것 같은데..

새롭게 배운 점

  1. 파이썬에서 앞 원소를 삭제할 때 del 키워드를 사용한다.
profile
2D | 3D 프론트엔드 개발자

0개의 댓글