😁 빅데이터 문제 풀기 & Study/- BAEKJOON 문제

[9012번] 괄호 / python3 (다시도전하기. 서방님&새색시 방법)

또방91 2021. 11. 15. 15:17
728x90

문제 링크: https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

도전했다가 나중에 해봐야지 놔뒀던 문제였기에 뭔가 싶었따.


❌ 1~2차시도 실패

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
# 1차접근  -> 실패 예외 발생: ())(()
#  괄호 "(" 개수 -  ")" 개수가 0이면 y / 아니면 n
 
t=int(input())
 
for i in range(t):
    t_ex=list(input())
    a="("
    b=")"
    if t_ex.count(a) - t_ex.count(b)==0:
        print("YES")
    else:
        print("NO")
 
# -----------------------------------------
# #2차접근  -> 이유는 모르지만 실패
# 만약 "("라면 pop")"
 
t=int(input())
 
for _ in range(t):
    t_ex=list(input())
 
 
    for i in t_ex:
        if i=="(":
            t_ex.pop()
    print(t_ex)
cs

❓ 정답은 ??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
t=int(input()) #테스트개수
 
for _ in range(t):
    data=list(input())
    result=[]
 
    for i in data:
        if i=='(':
            result.append(i)
        
        # i가 ')'인 경우
        else
            if len(result)==0:
                result.append('아니지롱')
                break #끝내기
            else
                result.pop()
                
    #괄호 짝꿍을 만나면 빼버리니까 아무것도 없음            
    if len(result)==0
        print('YES')
    
    else:  
        print('NO')
cs

💯 풀이 과정

1) '(' 랑 ')' 이렇게 짝꿍을 만나면 제거되는 식으로 문제를 설계

2) 그래서 result리스트에는 서방님을 기다리는 색시마냥 '('를 append하여 넣어놓고

3) for반복문으로 돌리는 와중 서방님 ')' 가 나타나면 짝꿍만나서 데이트가는 그런 양상.. ㅋㅋㅋ

4) 만약 result 리스트에 누가 남아있다면 짝꿍을 못찾은거나, 아닌 경우임


😎오늘의 한줄평: 오늘 저녁 남편님이랑 데이트를 하고싶지만 SQL 공부해야겠구나 ^_ㅠ

728x90