알고리즘 공부/파이썬(Python)

백준 10799번 쇠막대기 파이썬

마달랭 2024. 7. 7. 21:40
반응형

리뷰

스택을 활용한 문제이다.

 

문제 풀이

  1. 문자열을 받아주고 스택을 담을 빈 리스트, 정답을 출력한 result 변수를 0으로 초기화 해준다.
  2. 각 문자열을 참조하여 현재 문자열이 (일 경우 스택에 추가한다.
  3. 현재 문자열이 )인 경우 이전 문자열이 (인지 )인지에 따라 다르게 적용해준다.
  4. 이전 문자열이 (일 경우 스택에서 마지막 인자를 뽑고 스택의 길이만큼 result에 더해준다.
  5. 이전 문자열이 )일 경우 스택에서 마지막 인자를 뽑고 1만큼 result에 더해준다.
  6. result를 출력해 준다.

 

참고 사항

  1. ) 이전 문자열이 (인 경우는 레이저를 발사하는 경우다. 즉, (를 하나 뽑고 스택의 길이만큼 더해주면 된다.
  2. ) 이전 문자열이 )인 경우는 막대기의 끝인 경우다. 즉, (를 하나 뽑고 1만큼 더해주면 된다.

 

정답 코드

def q10799():
    # 백준 10799번 쇠막대기 파이썬
    s = input()
    stack = []
    result = 0
    for i in range(len(s)):
        if s[i] == '(':
            stack.append(s[i])
        else:
            if s[i - 1] == '(':
                stack.pop()
                result += len(stack)
            else:
                stack.pop()
                result += 1
    print(result)
q10799()

 

 

728x90
반응형