Algorithm Study/Python

[백준 파이썬] #10799. 쇠막대기

728x90
반응형

풀기 전 생각해보기😮

  • stack 문항
  • 각각의 경우를 따져서 풀 수 있다

풀이🛫

# 스택
# 모든 경우대로 조건문을 나열

arr = list(input())
stack = []
cnt = 0
for i in range(len(arr)):
    if len(stack) == 0 and arr[i] == '(':   # stack이 아직 만들어지지 않았을 경우
        stack.append('(')
    else:   # stack이 존재할 때
        # 이전에 들어온 값과 현재 입력되는 값을 비교
        # 모든 경우의 수는 4가지 밖에 되지 않음
        if arr[i-1] == '(' and arr[i] == '(':       # case1
            stack.append('(')
        elif arr[i-1] == '(' and arr[i] == ')':     # case2
            stack.pop()
            cnt += len(stack)
        elif arr[i-1] == ')' and arr[i] == ')':     # case3
            cnt += 1
            stack.pop()
        else:   # arr[i-1] == ')' and arr[i] = '('  # case4
            stack.append('(')
print(cnt)

 

핵심 정리🎁

  • 가장 최근에 입력된 값과, 현재 입력하려는 값을 가지고 모든 경우를 구현할 수 있기 때문에 stack 자료구조를 떠올렸다

링크💎

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

 

10799번: 쇠막대기

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

www.acmicpc.net

 

 

 

'Algorithm Study > Python' 카테고리의 다른 글

[백준 파이썬] #1406. 에디터  (0) 2022.12.10
[백준 파이썬] #2430. AC  (0) 2022.12.09
[백준 파이썬] #2493. 탑  (0) 2022.12.08
[백준 파이썬] #2636. 치즈  (1) 2022.11.08
[백준 파이썬] #2146. 다리만들기  (0) 2022.11.06