boj 2504 [스택, 구현]

돌멩e·2022년 7월 12일
0

알고리즘 뿌수기

목록 보기
8/17
post-thumbnail

boj 2504

수정할 것

📍 Idea Logic

  1. 일단 열린 괄호는 스택에 넣는다. '(' or '['

  2. 이후 아이디어가 떠오르지 않음 ㅠㅠ

  3. 구글링을 통해 해답 찾아봄

❗️ ERROR Point

📌 New Arrival

Stack의 특징

🔑 Solution

s = input()
stack = []
tmp = 1
res = 0

# for c in s를 하면 안 되고 길이로 돌아야 함
for i in range(len(s)):
  if s[i] == '(':
    tmp *= 2
    stack.append(s[i])
  elif s[i] == '[':
    tmp *= 3
    stack.append(s[i])

  elif s[i] == ')':
    if not stack or stack[-1] == '[':
      res = 0
      break
    if s[i-1] == '(':
      res += tmp
    tmp //= 2
    stack.pop() # pop도 까먹지 말고 꼭
  
  else:
    if not stack or stack[-1] == '(':
      res = 0
      break
    # [()]의 경우 ] 직전 문자가 )이므로 더하지 않고 넘어감
    # 단, 이 경우는 오류는 아님
    if s[i-1] == '[':
      res += tmp
    tmp //= 3
    stack.pop() # pop 까먹지 말기

if stack:
  res = 0
print(res)
profile
돌이 되고 싶어요

0개의 댓글

관련 채용 정보