본문 바로가기
기타/알고리즘

(JS) 반복문의 break [Programmers - 붕대 감기]

by 가나닩 2024. 10. 4.

문제를 풀기위해 아래와 같은 요소들을 고려하였다.

  1. 가독성과 안정성을 위한다면 주어진 조건을 순서대로 구현하는것이 좋지만 코드를 간소화 하거나 실행시간을 줄이기 위해서는 생략이나 이동이 가능한 코드는 조절을 하는것이 유리하다.
  2. return문은 코드 마지막에 한개만 존재해야 하는것이 아니다. 결과가 존재하여 더이상의 연산이 필요없을때는 바로 return문을 사용해도 무관하다.
  3. 회복과 피해를 반복하는 과정 중간에 캐릭터가 죽는다면 더이상의 연산을 진행하지 않고 -1을 반환한다. 연산을 중단하지 않으면 죽은 이후에 높은 회복량으로 다시 체력이 오를 가능성이 있다.
더보기
function solution(bandage, health, attacks) {
    let answer = health;
    
    for(let i = 0;i<attacks.length;i++) {
    	// 이번턴에 사용하는 시간 계산
        let nowTime = i === 0 ? attacks[i][0] : attacks[i][0] - attacks[i-1][0];
        // 1초당 회복량 계산
        answer += (nowTime-1) * bandage[1];
        // 연속 성공시의 추가 회복량 계산
        answer += Math.floor((nowTime-1)/bandage[0]) * bandage[2];
        // 체력이 최대치를 넘을 경우 보정
        if(answer>health) answer=health;
        // 피해량 계산
        answer -= attacks[i][1];
        // 캐릭터가 죽었을 경우 -1을 반환하고 종료
        if(answer <= 0) return -1;
    }
    
    return answer;
}

 

 

• break

break를 사용하면 반복문의 중간에 현재 반복문을 종료하도록 할 수 있다.

let arr = [10, 20, 30, 40, 50];

for(let i=0;i<arr.length;i++) {
    console.log(arr[i]);
    if(i === 2) break;
}

//10, 20, 30 이 출력됨

 

반복문이 진행되는동안 i === 2 가 되면 break 문에 의해 반복문이 중단된다.

i가 0, 1, 2 일때 console.log가 동작하고 반복문이 종료되므로 10, 20, 30이 출력된다.