728x90
📍 누적 값이 point보다 높은지 낮은지 비교하고 추가하기
제목은 거창하게 작성했지만, 내용은 쉬운 글이다. 이진 탐색의 결정 알고리즘 문제를 풀면서 작은 skill(?)
을 남겨 놓고 싶어 작성했다. 예를 들어, 현재까지 누적된 sum=6
이고, 다음 x
값을 누적할 때 point
보다 높으면 continue
하고, 높지 않으면 포함시키는 방법을 작성하고 싶다면 어떻게 작성할까? 다음과 같이 작성할 수 있다.
let arr = [1, 3, 2, 5, 1, 1, 1];
let point = 10;
let sum=0;
for (let x of arr){
if(sum+x>point)continue
else sum+=x;
}
728x90
이를 응용해서 currentTime
에 songTime
값을 누적할 때 만약, 다음 songTime
값이 point
를 넘으면 새로운 DVD
로 녹음 한다고 할 때 DVD
는 총 몇개가 필요할까? 의 질문에는 다음과 같이 작성할 수 있다. 중요한 점은 9번째 코드의 currentTime
을 0
으로 초기화시키는것이 아닌 현재 song
으로 초기화 시켜야 다음 song
을 누적할 수 있다.
let songs = [1, 3, 2, 5, 1, 1, 1];
let point = 10;
let currentTime=0;
let DVD=0;
for (let song of songs){
if(currentTime+song>point){
DVD++;
currentTime=song;
}
else currentTime+=song
}
console.log(DVD)
👉🏽 3
반응형
'Algorithm > 논리적사고(Logical Think)' 카테고리의 다른 글
[ 논리적사고 ] - 재귀를 이용하여 부분 집합, 순열, 조합 구하기 (0) | 2021.10.01 |
---|---|
[ 논리적사고 ] - 배열 중간에 있는 값을 맨 앞으로 옮기기 (0) | 2021.09.03 |
[ 자바스크립트(JavaScript) ] 2차원 행렬 sort하기 (0) | 2021.08.20 |
[ 논리적사고 ] - string함수 사용하지 않고 자연수 거꾸로 뒤집기 (0) | 2021.08.20 |
[ 논리적사고 ] - 자연수의 자릿수 합 구하기 (0) | 2021.08.20 |
댓글