[백준10811_자바스크립트(javascript)] - 바구니 뒤집기

경이·2024년 9월 11일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
178/325
post-thumbnail

🔴 문제

바구니 뒤집기


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const inputs = fs.readFileSync(path).toString().trim().split('\n');
const [n, m] = inputs[0].split(' ').map(Number);
let baskets = Array.from({ length: n }).map((_, idx) => idx);

for (const input of inputs.slice(1)) {
  const [i, j] = input.split(' ').map((it) => +it - 1);

  baskets = [
    ...baskets.slice(0, i),
    ...baskets.slice(i, j + 1).reverse(),
    ...baskets.slice(j + 1),
  ];
}

console.log(...baskets.map((it) => it + 1));

🟢 풀이

⏰ 소요한 시간 : -

i부터 j까지 바구니를 뒤집어야 한다. 배열 인덱스는 0부터 작용하므로 ij1씩 빼주었다.
JS의 slice 메서드는 어떤 배열의 시작부터 끝까지에 대한 얕은 복사본을 배열객체로 반환해준다. 참고로 목표값의 직전까지 반환하기 때문에 0부터 5까지 복사하고 싶으면 0, 6을 매개변수로 전달해줘야 한다. 따라서 0부터 i까지, i부터 j까지를 뒤집은 즉 reverse를 수행한 배열, j+1부터 끝까지 를 복사하고 이를 모두 스프레드 연산자로 풀어서 하나의 배열을 만들어준다.


🔵 Ref

profile
록타르오가르

0개의 댓글