본문 바로가기
프로그래밍/알고리즘 문제

[프로그래머스] 스택/큐 쇠막대기 (python)

by 잇서니 2019. 8. 19.
반응형

처음 저의 코드입니다 (실행시간 초과떴어요)

def solution(arrangement):
    
    # 필요한 변수 세팅
    answer = 0
    arr=list(arrangement)
    laser_end=[]
    bar=[]
    bar_start=[]

    
    # 레이저의 끝을 구하자 (arr 3개 원소씩 비교하면서)
    for i in range(0,len(arr),+2):

        if arr[i]=='(' and arr[i+1]==')':
            laser_end.append(i+1)
            continue
        elif arr[i+1]=='(' and arr[i+2]==')':
            laser_end.append(i+2)
            i += 1

    
    # 쇠막대기 후보자들
    for i in laser_end:
        arr[i-1]='x'
        arr[i]='x'

    
   # 쇠막대기 만들자
    for i in range(0,len(arr),+1):
        if arr[i] == 'x':
            continue
        elif arr[i] == '(' :
            bar_start.append(i)
        else:
            bar.append((bar_start.pop() , i))

    
   # 최종 결과값을 구해보자
    for i in bar:
        for j in laser_end:
            if i[0]<j and j<=i[1] :
                answer += 1
    
    
    return answer+len(bar)

 

 

 

하 이렇게 간단하게 풀 수 있네요..

def solution(arrangement):
    
    # 필요한 변수 세팅
    answer = 0
    laser_to_zero=arrangement.replace('()','0')
    stick=0
    
   # 
    for i in laser_to_zero:
        if i=='(':
            stick += 1
        elif i == '0' :
            answer += stick
        else:
            stick -= 1
            answer += 1

    
    
    return answer

 

파이썬 개념

replace() 함수

for i in (문자열):

list() 함수

반응형

댓글