Kim Seon Deok

[백준] 9012 - 괄호 본문

python/Algorithm

[백준] 9012 - 괄호

seondeok 2022. 1. 14. 15:48

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

 

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

1. 문자열의 길이가 짝수
2. ( 로 시작해 )로 끝나야 한다.
3. ( 와 ) 의 갯수가 같아야 함
라고 접근했지만, ( ) ) ( ( ) 이라는 반례가 있었다.


그래서
1. 맨 처음에 )로 시작 하면 "NO".
2. (를 담기 위한 빈 리스트 vvps 생성.
(로 시작하는 경우
2-1 이후에 (가 왔을 때 (를 vvps에 append
2-2 이후에 )가 왔을 때 
2-2-1 vvps에 (가 남아있는 경우 (를 pop
2-2-2 vvps에 (가 남아있지 않은 경우 )를 vvps에 append
3.vvps의 길이가 0보다 클 때 "NO", 그렇지 않다면 "YES"

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
= int(input())
 
vps = []
for i in range(0,N):
 
    v = input()
    vps.append(v)
 
 
 
 
 
for i in range(0,N):
    
    if vps[i][0== ")":  
        print("NO")
    
    else:  
        vvps = [] 
        vvps.append("("
 
        for j in range(1,len(vps[i])):  
 
            if vps[i][j] == "(":  
                vvps.append("(")
            
            elif vps[i][j] == ")"
 
                if vvps.count("(")>0 :  
                    vvps.pop(-1)  
                
                else:  
                    vvps.append(")"
 
        if len(vvps)  == 0:  
            print("YES")
            
        else:
            print("NO")
 
 
 
 
 
cs

'python > Algorithm' 카테고리의 다른 글

[백준] 2659 십자카드  (0) 2022.01.14
[백준] 1244 스위치 켜고 끄기  (0) 2022.01.14
[백준]1302 베스트셀러  (0) 2022.01.08
[백준]1158 요세푸스 문제  (0) 2022.01.08
[백준] 1343번 폴리오미노  (0) 2022.01.06
Comments