Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 백준 #10799 쇠막대기 본문
728x90
와.. 이 문제 2학년때 c언어 기말고사로 나왔던 문제인데 여기있어서 반가웠다..ㅋㅋㅋㅋㅋㅋㅋ
이 처음 코드는 시간제한에 걸려서 시간 초과가 났다..
from collections import deque
que=deque()
s=input()
cnt=0
n=len(s)
i=0
while True:
x=0 # ( 의 개수
y=0 # ) 의 개수
ii=i
if i== n-1:
break
else:
x=0 # ( 의 개수
y=0 # ) 의 개수
ii=i
while True:
if ii== n:
break
if s[ii]=='(':
x+=1
que.append(s[ii])
if x!=0 and s[ii]==')':
y+=1
que.append(s[ii])
ii+=1
if x==y:
break
if x==1 and y==1: #레이저만 존재함
while que:
que.popleft() #큐 비움
i+=2
elif x==0 or y==0:
while que:
que.popleft()
i+=1
else :
p=0 #cnt+됐나 체크
data_pre=que.popleft() #이전 데이터
data_next=que.popleft() #다음 데이터
while que:
if data_pre=='(' and data_next==')':
cnt+=1
p=-1
data_pre=data_next
data_next=que.popleft()
if p==-1:
cnt+=1
i+=1
print(cnt)
그리고 코드를 하나하나 뜯어서 이렇게 고쳤다.!!
) 가 나오면 pop 해주고 그 앞을 확인했을 때, ( 인지 ) 인지 체크만해주면 된다
from collections import deque
que=deque()
s=input()
n=len(s)
cnt=0
for i in range(n):
if s[i]=='(':
que.append(s[i])
else: #)일때
if s[i-1]=='(':
que.popleft()
cnt+=len(que)
else: # ))
que.popleft()
cnt+=1#끝자락
print(cnt)
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 백준 #10866 덱 (0) | 2021.01.14 |
---|---|
[Python] 백준 #10845 큐 (0) | 2021.01.14 |
[Python] 백준 #3345 괄호 (0) | 2021.01.14 |
[Python] 백준 #10828 스택 (0) | 2021.01.14 |
[Python] 백준 #10989 수 정렬하기3 (0) | 2021.01.14 |
Comments