[큐/스택] 쇠막대기

정은경·2020년 4월 4일
0

1. 문제


(a) 레이저는 여는 괄호와 닫는 괄호의 인접한 쌍 '()'으로 표현합니다. 또한 모든 '()'는 반드시 레이저를 표현합니다.
(b) 쇠막대기의 왼쪽 끝은 여는 괄호 '('로, 오른쪽 끝은 닫힌 괄호 ')'로 표현됩니다.

2. 나의 풀이

  • 드디어 이해하고 풀이한 나의 코드!
def solution(arrangement):
    token_stack = []
    answer = 0
    for token in arrangement:
        if token == "(":
            token_stack.append(token)
            last_token = token
        else:
            if last_token == "(":
                token_stack.pop()
                answer += len(token_stack)
                last_token = token
            else:
                token_stack.pop()
                answer += 1
    return answer

3. 남의 풀이

def solution(arrangement):
  answer = 0 # 잘린 쇠막대기의 총 개수
  arrangement = list(arrangement)
  bong = 0 # 쇠막대기 개수

  while arrangement:
    if arrangement[0] == "(": # 여는 괄호
      bong += 1
      arrangement.pop(0)
      if arrangement[0] == ")": # 괄호쌍 일 경우
        bong -= 1
        answer += bong
        arrangement.pop(0)
    else: # 닫는 괄호
      arrangement.pop(0)
      bong -= 1
      answer += 1

  return answer


Reference

4. 느낀 점

  • 너무너무 어렵다! 어떻게 풀어야할 지 시작을 못하겠다....
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글