๐Ÿ‘’ ๋ญ? JS๋กœ PS๋ฅผ ํ•œ๋‹ค๊ณ ?

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][Javascript / JS] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ

์„ ๋‹ฌ 2023. 5. 9. 23:20
๋ฐ˜์‘ํ˜•

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

1. ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ณ  ๋งจ ์•ž ๊ธ€์ž๋ฅผ ๋งจ ๋’ค๋กœ ๋ณด๋‚ด๋Š” ์ž‘์—…์„ ํ•œ๋ฐ”ํ€ด ๋Œ๋ฆฐ๋‹ค

2. ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด๋งˆ๋‹ค ์˜ณ์€ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ํŒ๋‹จ => isRight() ํ•จ์ˆ˜

 

isRight ํ•จ์ˆ˜์—์„œ๋Š” stack ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜์—ฌ ์˜ณ์€ ๋ฌธ์ž์—ด์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

function isRight(s) {
    let stack = [];
    for(let i of s) {
        if(i === "(" || i === "{" || i === "[") {
            stack.push(i);
        } else {
            if(stack.length === 0) 
                return false;
            let top = stack[stack.length-1];
            if(i === ")" && top === "(") 
                stack.pop();
            else if(i === "}" && top === "{") 
                stack.pop();
            else if(i === "]" && top === "[") 
                stack.pop();
            else 
                return false;
        }
    }
    return stack.length === 0;
}

function solution(s) {
    let ans = 0;
    s = s.split(""); // ๋ฌธ์ž์—ด->๋ฐฐ์—ด ๋ณ€ํ™˜
    for(let i in s) {
        if(isRight(s))
            ans++;
        s.push(s[0]);
        s.shift();
    }
    return ans;
}
๋ฐ˜์‘ํ˜•