[1,2,3,4,5...N개의 바구니]
하지만 처음 바구니는 공이 들어있지 않으니 [0,0,0,0...N]
예제 입력:
5 4
1 2 3
3 4 4
1 4 1
2 2 2
해설: 총 바구니는 N(5)개이며 M(4)번 반복한다.
첫번째줄 해석: 1번부터 2번 바구니에 3번공을 집어넣어라
두번째줄 해석: 3번부터 4번 바구니에 4번공을 집어넣어라
세번째줄 해석: 1번부터 4번 바구니에 1번공을 집어넣어라
네번째줄 해석: 2번부터 2번 바구니에 2번공을 집어넣어라
따라서, 출력은:
javascript 00000 -> 33000 -> 33440 -> 11110 -> 12110
코드:
const [[n, m], ...input] = require("fs").readFileSync(0).toString().split("\n").map(x => x.split(" ").map(Number)); // 1. 구조 분해 할당
let arr = Array(n).fill(0); // 2. n의 수만큼 배열에 0을 fill: [0, 0, 0, 0, 0]
for (let [a, b, c] of input) { // 3. [a,b,c][d,e,f]...등등 input 내 자료형 선택
for (let i = a - 1; i < b; i++) {
arr[i] = c; // 4. i부터 b까지 arr[i]에 c를 할당
}
}
console.log( arr.join(" ") );
1, 구조분해 할당:
n = [5], m = [4], ...input = [1,2,3,3,4,4,1,4,1,2,2,2]
2, fill 메서드:
let arr = Array(n).fill(0) // n(5)의 길이의 배열을 생성 후 0으로 채우기 = [0,0,0,0,0]
3, 구조분해 할당 + for ..of:
for(let[a, b, c] of input){} // input의 수를 [a, b, c] 반복형태로 생성: [1,2,3] [3,4,4] [1,4,1] [2,2,2]
4, for문으로 반복 후 출력 값 얻기
arr[idx] = c; // i부터 b까지 arr[i]에 c를 할당 (예시: 두번째줄[3,4,4]= arr[2]부터 arr[3]까지 4를 할당. 즉 3번4번에 4를 할당!
[1,2,3,4,5...N개의 바구니]
예제 입력:
5 4
1 2
3 4
1 4
2 2
해설: 총 바구니는 N(5)개이며 M(4)번 반복한다.
첫번째줄 해석: 1번과 2번 바구니의 공을 바꿔라
두번째줄 해석: 3번과 4번 바구니의 공을 바꿔라
세번째줄 해석: 1번과 4번 바구니의 공을 바꿔라
네번째줄 해석: 2번과 2번 바구니의 공을 바꿔라
따라서, 출력은:
javascript 12345 -> 21345 -> 21435 -> 31425 -> 31425
코드:
const [[n, m], ...input] = require("fs").readFileSync(0).toString().split("\n").map(x => x.split(" ").map(Number)); // 구조 분해 할당
let arr = Array(n + 1).fill().map((v, i) => i); // [0,1,2,3,4,5]
for (let [i, j] of input) {
let num = arr[i];
arr[i] = arr[j];
arr[j] = num;
}
console.log(arr.slice(1).join(" ")); // 맨 앞 제거: .slice(1)
예제 입력:
5 4
1 2
3 4
1 4
2 2
해설: 총 바구니는 N(5)개이며 M(4)번 반복한다.
첫번째줄 해석: 1번부터 2번 바구니에 공을 역순으로 집어넣어라
두번째줄 해석: 3번부터 4번 바구니에 공을 역순으로 집어넣어라
세번째줄 해석: 1번부터 4번 바구니에 공을 역순으로 집어넣어라
네번째줄 해석: 2번부터 2번 바구니에 공을 역순으로 집어넣어라
따라서, 출력은:
javascript 12345 -> 21345 -> 21435 -> 34125 -> 34125
코드:
let input = require("fs").readFileSync(0).toString().split("\n");
let [N, M] = input[0].split(" ").map(Number); // 첫째줄 주어진 값 input[0]
let basket = Array(N).fill(1).map((a, b) => a + b);
for (let i = 1; i <= M; i++) { // 둘째줄부터의 계산에 필요한 값 input[i]
let [a, b] = input[i].split(" ").map(Number);
let arr = [];
for (let j = a - 1; j < b; j++) {
arr.push(basket[j]);
}
arr.reverse();
basket.splice(a - 1, b - a + 1, ...arr);
}
console.log(basket.join(" "));