기타/알고리즘
(JS) 반복문의 break [Programmers - 붕대 감기]
가나닩
2024. 10. 4. 01:41
문제를 풀기위해 아래와 같은 요소들을 고려하였다.
- 가독성과 안정성을 위한다면 주어진 조건을 순서대로 구현하는것이 좋지만 코드를 간소화 하거나 실행시간을 줄이기 위해서는 생략이나 이동이 가능한 코드는 조절을 하는것이 유리하다.
- return문은 코드 마지막에 한개만 존재해야 하는것이 아니다. 결과가 존재하여 더이상의 연산이 필요없을때는 바로 return문을 사용해도 무관하다.
- 회복과 피해를 반복하는 과정 중간에 캐릭터가 죽는다면 더이상의 연산을 진행하지 않고 -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이 출력된다.