[백준 | Javascript] 17299

박기영·2022년 9월 6일
0

백준

목록 보기
100/127

기초 알고리즘 1/2. 201 - 자료 구조 1(연습)
17299번. 오큰등수

문제

17299번 문제 링크

solution

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const iter = Number(input[0]);

input = input[1].split(" ").map((item) => Number(item));

// -1로 채워진 ans 배열 생성
let ans = new Array(iter).fill(-1);

// count에는 중복되는 숫자의 개수를 넣어줄 것임. key - value 형태로.
// 예를들어, 1이 3개면 "1" : 3 이런식.
let count = {};

// input에 있는 원소를 하나씩 돌리면서
// count[x]가 존재한다면 value + 1
// count[x]가 없다면 0 + 1
input.forEach((x) => {
  count[x] = (count[x] || 0) + 1;
});

let stack = [];

// 17298번과 동일한 방법
for (let i = 0; i < iter; i++) {
    while (
        stack.length &&
        count[input[stack[stack.length - 1]]] < count[input[i]]
    ) {
        ans[stack.pop()] = input[i];
    }
    stack.push(i);
}

console.log(ans.join(" "));

17298번과 동일하다.
필자의 17298번 풀이

참고 자료

참고 자료 1

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글