Part4.2_자료구조(스택,큐,해쉬,힙)_쇠막대기

Eugenius1st·2022년 1월 15일
0

Python_algorithm

목록 보기
18/83

쇠막대기

내가 생각한 코드

나는 ( 의 경우에는 cnt=+1 해주고 ) 의경우에는 두가지로 나뉘는데
1. ) 의 앞이 ( 의 경우에는 슬라이스 해주므로
cnt -= 1 한 후 res =+ cnt 를 해주어 더했다...
2. ) 앞이 ) 의 경우에는 막대를 닫느 것이므로
cnt += 1 한 후 cnt -= 1 해주어 막대 카운트를 내렸다

import sys
#from collections import deque # deque import
sys.stdin = open("input.txt", "rt")

Line= str(input()) 
cnt = 0
res = 0
for i in range(0,len(Line)):
    if Line[i] == '(':
        cnt+=1

    else:
        if Line[i-1] == '(':
            cnt-=1
            res += cnt
        else:
            cnt-=1
            res+=1
        
print(res)


다행히///

선생님 코드

카운팅 논리는(')'의 앞이 '('인지 ')'인지를 보는 것) 나랑 같으시지만, 스택이라는 자료를 쓰신다는 점은 나랑 다르다 !!
스택에 ( ( ( 를 쌓고, 닫는 괄호 나오면 스택에서 pop 하여 ( ( 이렇게 되도록 한다.
그리고 stack 에 그 길이를 더한다. sum += len(stack)

import sys
#from collections import deque # deque import
sys.stdin = open("input.txt", "rt")
# strin 읽는 것은 그냥 s = input() 하면 된다.
s = input() 
stack = []
cnt = 0
res = 0
for i in range(len(s)):
    if s[i] == '(':
        stack.append(a[i])

    else:
        stack.pop() #어차피 if 건 else 건 pop 하므로 위에 써준다.
        if s[i-1] == '(':
            cnt += len(stack)
        else:
            cnt += 1
print(cnt)
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글