Algorithm๐Ÿฅ‡

10799.์‡ ๋ง‰๋Œ€๊ธฐ

hae02y 2023. 10. 16. 08:21
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

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

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

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

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

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

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

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

์ž…๋ ฅ

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

์ถœ๋ ฅ

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

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ 256 MB 47077 30280 22507 64.761%

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

ํ’€์ด

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฌธ์ œ๋Š” ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ์ ‘๊ทผํ•˜์—ฌ์•ผํ•œ๋‹ค.
์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์ž˜๋ฆฌ๋ ค๋ฉด ()๊ด„ํ˜ธ๊ฐ€ ๋“ฑ์žฅ ํ•ด์•ผ ํ•œ๋‹ค. (๊ทธ๋ฆผ์ฐธ๊ณ )

์ฆ‰ ๋ ˆ์ด์ €๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด ์ง€๊ธˆ๊นŒ์ง€ (๋กœ ๋ˆ„์ ๋˜์–ด์žˆ๋˜ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์ž˜๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” ๊ธฐํ˜ธ๋Š” 2๊ฐ€์ง€ ์ด๋ฏ€๋กœ ๋‚˜๋ˆ ์„œ ๋ณด์ž

( ๋“ฑ์žฅ

(๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ์—๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ ˆ๋‹จ๊ธฐ ์•„๋ž˜์— ๋†“๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
์ฆ‰, Stack์— Push ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

) ๋“ฑ์žฅ

) ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ ๋˜ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆˆ๋‹ค.

  1. ๋ ˆ์ด์ €๊ฐ€ ๋‚˜์˜ฌ๊ฒฝ์šฐ
  2. ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋Š” ๊ฒฝ์šฐ

https://delay100.tistory.com/3 ํ•ด๊ฒฐ๋ฐฉ์‹

์ฝ”๋“œ

public class ์‡ ๋ง‰๋Œ€๊ธฐ {  

    public static void main(String[] args) throws IOException {  
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));  

        String s = bf.readLine();  

        String[] sl = s.split("");  
        Stack<String> st = new Stack<>(); //์Šคํƒ์„ ์„ ์–ธ  

        int count = 0;  
        for (int i = 0; i < sl.length; i++) {  
            if(sl[i].equals("(")) {  
                st.push(sl[i]);  
            }  
            else if (sl[i].equals(")")) {  
                if (sl[i-1].equals("(")) {  
                    st.pop(); //()์ผ๋•Œ๋‹ˆ๊นŒ ํ•˜๋‚˜๋ฅผ ๋นผ์ค€๋‹ค.  
                    count+=st.size(); //์Šคํƒ์˜ ํฌ๊ธฐ๋ฅผ ์นด์šดํŠธ์— ๋„ฃ์–ด์ค€๋‹ค.  
                } else {  
                    st.pop();  
                    count++;  
                }  
            }  
        }  
        System.out.print(count);  
    }  

}
๋ฐ˜์‘ํ˜•