📌 문제
📌 풀이
const [[n, m], ...input] = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(x => x.split(' ').map(Number));
let arr = Array.from({length: n}, (_,i) => i + 1);
const reverseBaskets = (baskets, i, j) => {
while (i < j) {
[baskets[i], baskets[j]] = [baskets[j], baskets[i]];
i++;
j--;
}
}
for (let idx = 0; idx < m; idx++) {
const [i,j] = input[idx].map(num => num - 1);
reverseBaskets(arr, i, j);
}
console.log(arr.join(" "))
- 배열 비구조화 할당을 이용해서, 주어진 입력값의 '첫째 줄'과 '둘째 줄 ~ 마지막 줄'을 나눈다.
- reverseBaskets 함수에 1부터 n개의 번호가 담긴 arr와 i, j 값을 넘긴다.
- while 문 안에서 baskets[i]와 baskets[j]의 값을 교환한다.
- i 값을 증가시키고, j 값을 감소시킨다. → 순서를 반복해서 뒤집다가 i >= j가 되면 모두 바뀌었으므로 while문이 종료된다.
728x90
'배움 기록 > 코테 연습' 카테고리의 다른 글
[알고리즘] 백준 9086번 : JavaScript(Node.js) 풀기 (0) | 2023.10.04 |
---|---|
[알고리즘] 백준 1546번 : JavaScript(Node.js) 풀기 (0) | 2023.10.04 |
[알고리즘] 백준 10813번 : JavaScript(Node.js) 풀기 (0) | 2023.07.30 |
[알고리즘] 백준 10810번 : JavaScript(Node.js) 풀기 (0) | 2023.07.23 |
[알고리즘] 백준 2562번 : JavaScript(Node.js) 풀기 (0) | 2023.07.16 |
댓글