https://www.acmicpc.net/problem/24511
[유형]
- 자료구조
- 스택
- 덱
- 큐
[풀이]
N = 4 : 자료구조 4개
A = 0 1 1 0 : 각 자료구조의 종류 === Queue 혹은 Stack !! (문제에도 적혀있다 ....)
B = 1 2 3 4 : 현재 각 자료구조에 들어있는 수
M = 3 : 넣을 수의 갯수
C = 2 4 7 : 넣을 수
x = 2, 4., 7 | A 형태 | B 현재요소 |
0 = 큐 | 1 | |
1 = 스택 | 2 | |
1 = 스택 | 3 | |
0 = 큐 | 4 |
스택인 것 들은 어차피 원소의 값이 바뀌지 않고 처리해줘야 할 게 없기 때문에 넘어가면 된다.
큐인 것들만 쌋 모아주고 별도의 큐를 만들어준 다음에 하나씩 append 하고 popleft 하는 거로 생각하면 된다.
1번 예제를 보면,
[1,4] 라는 큐에서 2, 4, 7 이 차례로 들어온다.
1 4 에서 2를 새로 추가해서 [2 1 4] 로 만들어주고 다음 4는 맨 마지막을 pop 해서 리턴된다
1차 리턴 결과는 [2 2 3 1]
큐 자료구조에서 하나씩 추가하면서 밀어내는 것이 결국 처리될 하나의 공통 로직이다.
[코드] ! 틀림 -> 왜 틀렸는지 알 려 주실 분....??
const fs = require('fs');
const [n, A, B, M, C] = fs
.readFileSync('./input.txt')
.toString()
.trim()
.split('\n')
.map((i) => i.split(' ').map(Number));
let N = Number(n);
let queue = [];
for (let i = 0; i < N; i++) {
if (A[i] === 0) queue.push(B[i]); //[1,4]
}
queue.sort((a, b) => b - a); //reverse
const result = [];
for (let j of C) {
queue.push(j);
result.push(queue.shift());
}
console.log(result.join(' ').toString());
왜 계속 틀릴까..
728x90
반응형
'자료구조+알고리즘 > BOJ' 카테고리의 다른 글
[BOJ-10845_silver4] 큐 (자바스크립트) (0) | 2024.03.02 |
---|---|
[BOJ-11866_silver5]요세푸스 문제 0 (자바스크립트) (0) | 2024.03.02 |
[BOJ-17413_silver3] 단어 뒤집기2 (javascript) (0) | 2024.02.29 |
[BOJ-10773-Siver4]제로 (javascript) (0) | 2024.02.29 |
[1152][백준_브론즈2] 단어의 개수 - JavaScript (0) | 2023.11.07 |