[백준 알고리즘] Node.js 1817. 짐 챙기는 숌
2023. 11. 21. 11:07ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/1817
1817번: 짐 챙기는 숌
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책
www.acmicpc.net
2. 풀이
- 내가 생각한 방법은 책은 무조건 순서대로만 뽑을 수 있기에 반복문을 이용하여 한 권씩 무게를 가져왔다.
- 이후 sum 이라는 변수에 책의 무게를 더하고, 박스의 개수를 위한 변수인 count를 추가해준다.
- 만약 sum이 주어진 M 의 값보다 작다면 count를 하나 감소시킨다.
- 만약 sum이 주어진 M의 값보다 크다면 sum을 0으로 초기화시키고, 다시 해당 책의 무게를 재검사한다.
const [N, M, ...books] = require('fs').readFileSync('/dev/stdin').toString().trim()
.split(/\s/).map(v => +v);
const findAns = () => {
if(N === 0) return 0; // 책의 개수가 0이면 바로 리턴.
let sum = 0; // 책의 무게를 관리할 변수
let count = 1; // 박스의 개수를 관리할 변수
for(let i = 0; i < N; i++){
sum += books[i];
count++;
// 주어진 무게보다 작다면 count 감소
if(sum <= M) count--;
else if(sum > M) { // 주어진 무게보다 크다면 sum 초기화와 해당 책 재검사를 위해 i를 하나 줄여줌.
sum = 0;
i--;
}
}
return count;
}
console.log(findAns());
'코딩연습' 카테고리의 다른 글
[백준 알고리즘] Node.js 1205. 등수 구하기 (0) | 2023.11.22 |
---|---|
[백준 알고리즘] Node.js 1996. 지뢰 찾기 (1) | 2023.11.21 |
[백준 알고리즘] Node.js 1769. 3의 배수 (1) | 2023.11.20 |
[백준 알고리즘] Node.js 14171. Cities and States (0) | 2023.09.05 |
[백준 알고리즘] Node.js 15810. 풍선 공장 (0) | 2023.09.01 |