Algoritm/BOJ

[BOJ] 10799번: 쇠막대기

twoDeveloper 2022. 11. 21. 00:33

■ 문제풀이

  • 기본적인 자료구조 pop, append를 사용한 문제입니다.
  • 각 막대기 '(' 모양일 경우 stack에 append 합니다.
  • 각 막대기 ')' 모양일 경우 조건이 두 가지 입니다. ')' 막대기가 나오기 이전 '(' 일 경우 stack에 쌓인 막대기를 pop 시킨 후 남아 있는 막대기 개수를 더합니다.
  • ')' 막대기가 나오기 이전 ')'일 경우 stack에 쌓인 막대기를 pop 시킨 후 잘린 막대기의 끄트머리 개수를 +1 시킵니다.

■ 문제해답

import sys
input = sys.stdin.readline

bar_razor = list(input().rstrip())
answer = 0
stack = []

for i in range(len(bar_razor)):
  if bar_razor[i] == '(':
    stack.append('(')

  else:
    if bar_razor[i - 1] == '(':
      stack.pop()
      answer += len(stack)

    else:
      stack.pop()
      answer += 1

print(answer)

■ 문제출처

https://www.acmicpc.net/problem/10799

 

10799번: 쇠막대기

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

www.acmicpc.net

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 1158번: 요세푸스 문제  (0) 2022.09.11
[BOJ] 10845번: 큐  (0) 2022.09.06
[BOJ] 1406번: 에디터  (0) 2022.09.06
[BOJ] 1874번: 스택 수열  (0) 2022.09.06
[BOJ] 9012번: 괄호  (0) 2022.09.06