반응형
백준 10810번 공 넣기 (javascript, node.js)
문제
- 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다.
- 도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다.
- 공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
- 둘째 줄부터 M개의 줄에 걸쳐서 공을 넣는 방법이 주어진다. 각 방법은 세 정수 i j k로 이루어져 있으며, i번 바구니부터 j번 바구니까지에 k번 번호가 적혀져 있는 공을 넣는다는 뜻이다. 예를 들어, 2 5 6은 2번 바구니부터 5번 바구니까지에 6번 공을 넣는다는 뜻이다. (1 ≤ i ≤ j ≤ N, 1 ≤ k ≤ N)
- 도현이는 입력으로 주어진 순서대로 공을 넣는다.
출력
- 1번 바구니부터 N번 바구니에 들어있는 공의 번호를 공백으로 구분해 출력한다. 공이 들어있지 않은 바구니는 0을 출력한다.
예제입력 1
5 4
1 2 3
3 4 4
1 4 1
2 2 2
예제출력 1
1 2 1 1 0
문제풀이
- n 개의 바구니가 주어지며 i번 부터 j번까지 K 번호가 적혀 있는 공을 넣는다.
- m 번 반복하여 마지막 남아 있는 공의 번호를 출력하면 되는 문제
//10810번
//공넣기
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");
const n = Number(input[0].split(" ")[0]);
const m = input[0].split(" ")[1];
// 배열을 만들어서 0으로 채워둔다.
let basket = new Array(n).fill(0);
for (i = 1; i <= m; i++) {
const a = input[i].split(" ").map(Number);
// i번 바구니
const from = a[0];
// j번 바구니
const to = a[1];
// k번 번호
const ballNum = a[2];
// console.log(basket); // 바구니에 공이 들어가는 것 확인
// from부터 to 까지 반복문으로 basket[j] 에 공 넣기
for (j = from - 1; j < to; j++) {
basket[j] = ballNum;
}
}
console.log(basket.join(" "));
'Algorithm_javascript > 4. 1차원 배열' 카테고리의 다른 글
# 백준 5597번 과제 안 내신 분..? (javascript, node.js) (0) | 2023.05.18 |
---|---|
백준 10810번 공 바꾸기 (javascript, node.js) (0) | 2023.05.18 |
백준 2562번 최댓값 (javascript, node.js) (0) | 2023.05.18 |
백준 10818번 최소, 최대 (javascript, node.js) (0) | 2023.05.15 |
백준 10871번 X보다 작은 수 (javascript, node.js) (0) | 2023.05.15 |