스택 문제풀이

자몽·2022년 1월 18일
1

알고리즘

목록 보기
24/31

괄호 [백준]

링크

https://www.acmicpc.net/problem/9012

코드

function bracket(arr){
    let brackets = []
     while (arr.length > 0) {
         let temp = arr.shift()
        if(temp==='('){
            brackets.push(temp)
        }else if(temp===')'){
            if(brackets.length>0){
                brackets.pop()
            }else{
                return 'NO'
            }
        }
    }
    if (brackets.length === 0) {
        return 'YES';
    }
    return 'NO'
}

function main() {
    let fs = require('fs');
    let input = fs.readFileSync('/dev/stdin').toString().split('\n');

    const caseCount = Number(input[0]);
    for (let i = 1; i <= caseCount; i += 1) {
        let cases = input[i];
        let arr = []
        arr = cases.split('')
        console.log(bracket(arr))
    }
}
main()

오큰수 [백준]

문제 링크

https://www.acmicpc.net/submit/17298/37754154

코드

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

const cases = Number(input[0]);
const arr = input[1].split(' ').map(Number);

const stack = [];

for(let i=0; i< cases; i++){
    while(stack.length && arr[i] > arr[stack[stack.length-1]]){
        arr[stack.pop()] = arr[i];
    }
    stack.push(i);
}

while(stack.length){
    arr[stack.pop()] = -1;
}
console.log(arr.join(' ').trim());
profile
꾸준하게 공부하기

0개의 댓글