[알고리즘] 백준 23253 자료구조는 정말 최고야 (자바스크립트)

Subin·2022년 12월 15일
1
post-thumbnail
post-custom-banner

스택
자료구조는 정말 최고야

✏️ 요구 사항 분석

입력

  1. 첫째 줄에는 교과서의 수 N, 교과서 더미의 수 M
  2. 둘째 줄에는 2 X M줄에 걸쳐 각 더미의 정보

출력

올바른 순서대로 교과서를 꺼낼 수 있으면 YES
꺼낼 수 없으면 NO

교과서 쌓기

  1. N권을 M개의 더미에 주어진대로 쌓는다.
  2. 입력 두번째 줄에는 i번째 더미를 나타내는 교과서 수이다.
  3. 입력 세번째 줄에는 책의 번호가 있다. 더미별로 순서대로 쌓는다.

교과서 꺼내기

  1. 각 더미의 맨 위에 있는 교과서만 꺼낼 수 있다.
  2. 교과서를 꺼낸 순서대로 나열한다. (번호순)
  3. 번호순으로 나열할 수 있으면 YES
  4. 번호순으로 나열할 수 없으면 NO

🗒 내 풀이

function solution(books) {
  const input = books.split("\n");
  const [_N, M] = input[0].split(" ");

  for (let i = 1; i <= M; i++) {
    let bookNumbers = input[i * 2].split(" ").map(Number);
    for (let j = 0; j < bookNumbers.length - 1; j++) {
      if (bookNumbers.pop() > bookNumbers.pop()) {
        return "NO";
      }
    }
  }
  
  return "YES";
}

const books = `4 2
2
3 1
2
4 2`;

console.log(solution(books));

⌨️ 풀이 과정

1

let bookNumbers = input[i * 2].split(" ").map(Number);

책의 더미는 2칸씩 띄어져 있으므로 *2를 통해 더미를 bookNumbers 배열에 대입하였다.

2

for (let j = 0; j < bookNumbers.length - 1; j++) {
  if (bookNumbers.pop() > bookNumbers.pop()) {
    return "NO";
  }
}

책더미1 를 꺼내는데 먼저 꺼낸 게 더 크면 번호순으로 나열할 수 없으므로 NO를 리턴한다.

3

return "YES";

그게 아니라면 YES를 리턴한다.

profile
고양이가 세상을 지배한다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 1월 10일

들어올 수 밖에 없는 썸네일 ㄷㄷ

답글 달기