Deep_Dev
article thumbnail

๋ฌธ์ œ

๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Parenthesis String, PS)์€ ๋‘ ๊ฐœ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ์ธ ‘(’ ์™€ ‘)’ ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ๊ทธ ์ค‘์—์„œ ๊ด„ํ˜ธ์˜ ๋ชจ์–‘์ด ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Valid PS, VPS)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ๋กœ ๋œ “( )” ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋งŒ์ผ x ๊ฐ€ VPS ๋ผ๋ฉด ์ด๊ฒƒ์„ ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ์— ๋„ฃ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด “(x)”๋„ VPS ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ VPS x ์™€ y๋ฅผ ์ ‘ํ•ฉ(concatenation)์‹œํ‚จ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด xy๋„ VPS ๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด “(())()”์™€ “((()))” ๋Š” VPS ์ด์ง€๋งŒ “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ  “(()” ๋Š” ๋ชจ๋‘ VPS ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์ด๋‹ค. 

์—ฌ๋Ÿฌ๋ถ„์€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด VPS ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ด์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ YES ์™€ NO ๋กœ ๋‚˜ํƒ€๋‚ด์–ด์•ผ ํ•œ๋‹ค. 

์ž…๋ ฅ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ํ•œ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 50 ์ดํ•˜์ด๋‹ค. 

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์ผ ์ž…๋ ฅ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(VPS)์ด๋ฉด “YES”, ์•„๋‹ˆ๋ฉด “NO”๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. 

 


์Šคํƒ์˜ ๊ธฐ๋ณธ๋ฌธ์ œ์ธ ๊ด„ํ˜ธ๋ฌธ์ œ์ด๋‹ค.

์ฒ˜์Œ์— ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ ๋‚˜์„œ, ํˆด์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰์ด ๋˜๋Š”๋ฐ ๋ฐฑ์ค€์ฑ„์ ์—์„œ ์ž๊พธ ์˜ค๋‹ต์ด๋ผ๊ณ  ๋‚˜์™€์„œ ๋ดค๋”๋‹ˆ

String s ๋ฅผ nextLine ์œผ๋กœ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ํ‹€๋ฆฌ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค.. 


 

import java.util.*;
public class Main {
    public static void main(String[] args) {
            Scanner kb=new Scanner(System.in);
            int n=kb.nextInt();

            for(int i=0; i<n; i++){
                String s=kb.next(); // nextLine (x)
                Stack<Character> stack=new Stack<>();
                for(int j=0; j<s.length(); j++){
                    if(s.charAt(j)=='('){
                        stack.push(s.charAt(j));
                    }else{
                        // ๋น„์–ด์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธ
                        if(stack.empty()){ // ๋น„์–ด์žˆ์œผ๋ฉด
                            stack.push(s.charAt(j)); // ')' push
                            break;
                        }else{ // ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด
                            stack.pop(); // '('์™€ ๋งŒ๋‚˜๊ฒŒ ๋ ํ…Œ๋‹ˆ pop
                        }
                    }
                }
                if(stack.empty()) System.out.println("YES");
                else System.out.println("NO");
            }
        }
    }