DevKim

[Python] 백준 #10799 쇠막대기 본문

알고리즘 PS

[Python] 백준 #10799 쇠막대기

on_doing 2021. 1. 14. 19:36
728x90

www.acmicpc.net/problem/10799

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

와.. 이 문제 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