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

Tech Log ๐Ÿ› ๏ธ

๋ฐฑ์ค€ 10799๋ฒˆ) ์‡ ๋ง‰๋Œ€๊ธฐ java ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ 10799๋ฒˆ) ์‡ ๋ง‰๋Œ€๊ธฐ java

sehaan 2023. 1. 21. 18:09

 

๋ถ„์„


๋ฌธ์ œ์— ์žˆ๋Š” ์กฐ๊ฑด๋“ค์„ ์ž˜ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค.

1. ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ์ž์‹ ๋ณด๋‹ค ๊ธด ์‡ ๋ง‰๋Œ€๊ธฐ ์œ„์—๋งŒ ๋†“์ผ ์ˆ˜ ์žˆ๋‹ค.

-> ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ด„ํ˜ธ๊ฐ€ ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

2. ๊ฐ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅด๋Š” ๋ ˆ์ด์ €๋Š” ์ ์–ด๋„ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.

-> ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ์ ์–ด๋„ ๋‘๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง„๋‹ค.

 

3.  ๋ ˆ์ด์ €๋Š” ์–ด๋–ค ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์–‘ ๋์ ๊ณผ๋„ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค.

-> ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ๊ฐ€ ํ˜ผ๋ˆ ๋ฐฉ์ง€ , ์ ์–ด๋„ ๋‘ ์ด์ƒ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง์„ ์˜๋ฏธ

 

๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ํ™œ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

๋จผ์ € ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด 

๋ ˆ์ด์ €๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์ž๋ฅด๋ฉด 1๋ฒˆ ์˜์—ญ์—์„œ 3๊ฐœ์˜ ์กฐ๊ฐ์ด ์ƒ๊ธด๋‹ค. 

2๋ฒˆ ์˜์—ญ์—์„œ ์ž๋ฅด๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œ 3๊ฐœ์˜ ์กฐ๊ฐ์ด ์ƒ๊ธด๋‹ค. 

3๋ฒˆ ์˜์—ญ์—์„œ๋Š” ๋˜๋ฉด ๋ฐ‘์— ๋‘๊ฐœ๋Š” ์ž˜๋ฆฌ์ง€ ์•Š๊ณ  ๋งจ ์œ„ ๋ง‰๋Œ€๊ธฐ๋งŒ 1์กฐ๊ฐ์ด ๋” ์ƒ๊ธด๋‹ค.

 

์—ฌ๊ธฐ์„œ ํŒจํ„ด์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ , '(' ๊ฐ€ ์ž…๋ ฅ์ด ๋˜๋ฉด ๋ ˆ์ด์ €๊ฐ€ ๋“ค์–ด์˜ฌ๋•Œ ์ƒ๊ธฐ๋Š” ์กฐ๊ฐ์ด ํ•˜๋‚˜์”ฉ ๋Š˜์–ด๋‚˜๋Š” ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚ฌ์„๋•Œ๋Š” ๊ฐ€์žฅ ์งง์€ ์‡ ๋ง‰๋Œ€๊ธฐ ์กฐ๊ฐ์ด ํ•œ ์กฐ๊ฐ ๋” ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ญ‰ ์ด์–ด๊ฐ€๋ฉด 

3+3+1+3+1+2+2+2 = 17

๊ฒฐ๊ณผ์ ์œผ๋กœ 17 ์กฐ๊ฐ์ด ๋‚˜์˜จ๋‹ค.

 

์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๋‹ค์‹œ ์„ค๋ช…ํ•ด๋ณด๋ฉด ,

1. '(' ์ด ์ž…๋ ฅ์ด ๋˜๋ฉด ์Šคํƒ์— push๋ฅผ ํ•ด์ค€๋‹ค.

2. ๋ ˆ์ด์ €๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์Šคํƒ ์‚ฌ์ด์ฆˆ๋งŒํผ ์กฐ๊ฐ์ˆ˜๋ฅผ ๋”ํ•ด์ค€๋‹ค.

3. ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋ฉด ์กฐ๊ฐ์ˆ˜๋ฅผ +1 ํ•ด์ฃผ๊ณ  ํ•ด๋‹น ๋ง‰๋Œ€๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ popํ•ด์ค€๋‹ค.

 

์†Œ์Šค์ฝ”๋“œ


 

import org.w3c.dom.ls.LSOutput;

import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException{
        Stack<Character> s = new Stack<>();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int result = 0;

        for(int i=0;i<str.length();i++){
            if(str.charAt(i) == '('){
                s.push(str.charAt(i));
            }
            else if(str.charAt(i) == ')' & str.charAt(i-1) == '('){
                s.pop();
                result += s.size();
            }
            else{
                s.pop();
                result += 1;
            }
        }
        System.out.println(result);
    }

}