본문 바로가기
배움 기록/코테 연습

[알고리즘] 백준 10811번 : JavaScript(Node.js) 풀기

by dygreen 2023. 8. 6.

📌 문제

 

📌 풀이

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

댓글