๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

์‡ ๋ง‰๋Œ€๊ธฐ(์ž๋ฃŒ๊ตฌ์กฐ-์Šคํƒ) ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/Algorithm (๊ธฐ์ดˆ๋ฌธ์ œํ’€์ด)

์‡ ๋ง‰๋Œ€๊ธฐ(์ž๋ฃŒ๊ตฌ์กฐ-์Šคํƒ)

Daehyunii 2022. 9. 2. 17:50
๋ฌธ์ œ(์ถœ์ฒ˜ : ์ธํ”„๋Ÿฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ๊ฐ•์˜, ์ •๋ณด์˜ฌ๋ฆผํ”ผ์•„๋“œ)
 

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋ ˆ์ด์ €๋กœ ์ ˆ๋‹จํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด์„œ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์•„๋ž˜์— ์„œ ์œ„๋กœ ๊ฒน์ณ ๋†“๊ณ , ๋ ˆ์ด์ €๋ฅผ ์œ„์—์„œ ์ˆ˜์ง์œผ๋กœ ๋ฐœ์‚ฌํ•˜์—ฌ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์„ ์ž๋ฅธ๋‹ค. ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ ์ด์ €์˜ ๋ฐฐ์น˜๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค.

• ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ์ž์‹ ๋ณด๋‹ค ๊ธด ์‡ ๋ง‰๋Œ€๊ธฐ ์œ„์—๋งŒ ๋†“์ผ ์ˆ˜ ์žˆ๋‹ค. - ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋‹ค๋ฅธ ์‡ ๋ง‰๋Œ€๊ธฐ ์œ„์— ๋†“๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ํฌํ•จ๋˜๋„๋ก ๋†“๋˜, ๋์ ์€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๋†“๋Š”๋‹ค.
• ๊ฐ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅด๋Š” ๋ ˆ์ด์ €๋Š” ์ ์–ด๋„ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.
• ๋ ˆ์ด์ €๋Š” ์–ด๋–ค ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์–‘ ๋์ ๊ณผ๋„ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ˆ˜ํ‰์œผ๋กœ ๊ทธ๋ ค์ง„ ๊ตต์€ ์‹ค์„ ์€ ์‡ ๋ง‰๋Œ€๊ธฐ์ด๊ณ , ์ ์€ ๋ ˆ์ด์ €์˜ ์œ„์น˜, ์ˆ˜์ง์œผ๋กœ ๊ทธ๋ ค์ง„ ์ ์„  ํ™”์‚ดํ‘œ๋Š” ๋ ˆ์ด์ €์˜ ๋ฐœ์‚ฌ ๋ฐฉํ–ฅ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ด์ €์™€ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๋ฐฐ์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋ ˆ์ด์ €๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ์ธ์ ‘ํ•œ ์Œ ‘( ) ’ ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ‘( ) ’๋Š” ๋ฐ˜ ๋“œ์‹œ ๋ ˆ์ด์ €๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

2. ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์™ผ์ชฝ ๋์€ ์—ฌ๋Š” ๊ด„ํ˜ธ ‘ ( ’ ๋กœ, ์˜ค๋ฅธ์ชฝ ๋์€ ๋‹ซํžŒ ๊ด„ํ˜ธ ‘) ’ ๋กœ ํ‘œํ˜„๋œ๋‹ค.

์œ„ ์˜ˆ์˜ ๊ด„ํ˜ธ ํ‘œํ˜„์€ ๊ทธ๋ฆผ ์œ„์— ์ฃผ์–ด์ ธ ์žˆ๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๋ ˆ์ด์ €์— ์˜ํ•ด ๋ช‡ ๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๋Š”๋ฐ, ์œ„ ์˜ˆ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๊ฐ๊ฐ 3๊ฐœ์™€ 2๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๊ณ , ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์–ด์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์€ ์ด 17๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง„๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ž˜๋ ค์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ ์กฐ๊ฐ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

โ–ฃ ์ž…๋ ฅ์„ค๋ช…
ํ•œ ์ค„์— ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ๊ณต๋ฐฑ์—†์ด ์ฃผ์–ด์ง„๋‹ค. ๊ด„ํ˜ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 100,000์ด๋‹ค.

โ–ฃ ์ถœ๋ ฅ์„ค๋ช…
์ž˜๋ ค์ง„ ์กฐ๊ฐ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.

 

โ–ฃ ์ž…๋ ฅ์˜ˆ์ œ 1

()(((()())(())()))(())

 

โ–ฃ  ์ถœ๋ ฅ์˜ˆ์ œ 1

17

 

โ–ฃ  ์ž…๋ ฅ์˜ˆ์ œ 2

(((()(()()))(())()))(()())

 

โ–ฃ ์ถœ๋ ฅ์˜ˆ์ œ 2

24

 

 

Tip

 

๋ฌธ์ œํ’€์ด

//๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋‹ต
function solution(string){
    let answer= 0;
    let stack = [];

    for(let i = 0 ; i < string.length ; i++){
        if(string[i] === '(') stack.push(string[i]);

        else if(string[i] === ')'){
            stack.pop();
            if(string[i] !== string[i-1]) answer += stack.length;
            else answer++;
        }
    }
    return answer;
}

let string = '(((()(()()))(())()))(()())'
console.log(solution(string));