๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 10799๋ฒˆ ์‡ ๋ง‰๋Œ€๊ธฐ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 2. 2.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 10799๋ฒˆ ์‡ ๋ง‰๋Œ€๊ธฐ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

 

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


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

 

์šฐ๋ฆฌ๋Š” ์ด ๊ฒƒ์„ ๋ณด๊ณ  stack.size()๋งŒํผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

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

  1. ( ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ
  2. ) ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ

( ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ

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


์ฆ‰, stack์— push ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

) ๊ฐ€ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ

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

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

๋ ˆ์ด์ €๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ

๋ ˆ์ด์ €๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ๋Š” ๋ฐ”๋กœ ์ง์ „ ์š”์†Œ๊ฐ€ (์ธ ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•œ๋‹ค.


๋ ˆ์ด์ €๊ฐ€ ๋‚˜์˜จ ๊ฒฝ์šฐ์—๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์˜ ๊ฐฏ์ˆ˜๋งŒํผ ์ฆ‰ stack.size()๋งŒํผ ์ •๋‹ต ๊ฐ’์— ๋ˆ„์ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋Š” ๊ฒฝ์šฐ
์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋Š” ๊ฒฝ์šฐ๋Š” ์กฐ๊ธˆ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•œ๋‹ค.


์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚ฌ๋‹ค๋Š” ๊ฒฝ์šฐ์—๋Š”

---- ์‡ ๋ง‰๋Œ€๊ธฐ

์œ„์™€ ๊ฐ™์€ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

 

๊ทธ๋Ÿผ ์ด ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์ž˜๋ฆฌ๋ฉด ๋ช‡๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋‚˜์˜ฌ๊นŒ?

 

-- | -- ์‡ ๋ง‰๋Œ€๊ธฐ

2๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

๊ทธ๋Ÿผ 3๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์งง์€ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž˜๋ผ๋ณด์ž.

 

--|-- // <-- ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜๊ฐ€ ๋‚จ์Œ
--|------ // <-- ์ด ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ํ•˜๋‚˜๊ฐ€ ๋” ๋‚จ์Œ
--|---------- // <-- ์—ญ์‹œ ๋™์ผ

์งค๋ฆฐ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์ œ์ผ ์ƒ๋‹จ ๋ถ€๋ถ„์€ ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค.


๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•œ ์ •๋‹ต ๊ฐ’์—๋Š” +1์„ ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ •๋‹ต ์ฝ”๋“œ

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] n = br.readLine().split("");

        Stack<String> stack = new Stack<>();

        int answer = 0;
        for (int i = 0; i < n.length; i++) {
            String now = n[i];

            if(now.equals("(")) stack.push(now);
            else {
                if(n[i-1].equals("(")) {
                    stack.pop();
                    answer += stack.size();
                }else {
                    answer++;
                    stack.pop();
                }
            }
        }
        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
    }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€