728x90
반응형
반응형
🙆♂️문제
🙋♂️풀이
괄호를 통해서 막대기수와 레이저 수를 구해서 풀어야 합니다.
스택 구조를 이용해서 풀 수 있습니다.
🚀 입력받기
import sys
msg = list(sys.stdin.readline())
먼저 괄호들을 하나하나 문자로 입력받아 msg 리스트에 저장합니다.
🚀 문제 풀이 핵심
br = []; total = 0
for i,v in enumerate(msg):
if v == '(':
br.append('(')
elif v == ')':
if msg[i-1] == '(':
br.pop(-1)
total += len(br)
else:
br.pop(-1)
total+=1
br리스트를 스택으로 사용하고 total 변수에 모든 값을 저장합니다.
enumerate를 사용해서 msg리스트의 인덱스와 값 둘다 접근할 수 있도록 하고
값이 여는 괄호' ( ' 가 들어온다면 별 다른 코드 없이 스택에 ( 를 쌓아 줍니다.
반대로 닫는 괄호 ' ) '가 들어온다면 두 가지 경우로 나뉩니다.
1. 전에 입력 값이 여는 괄호 ' ( '인 경우와
2. 전에 입력이 닫는 괄호 ' ) '인 경우 입니다.
1번 경우에는 스택에서 마지막 괄호를 지우고 total 값에 스택의 길이를 넣습니다.
이는 레이저로 인해 생기는 막대기 수를 의미합니다.
2번 경우에는 스택에서 마지막 괄호를 지우고 total값에 1을 추가합니다.
이는 원래 있어야 할 막대기 수를 의미합니다.
🚀 출력하기
print(total)
계산된 total값을 출력합니다.
728x90
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][Python] 17299. 오등큰수 (0) | 2022.09.05 |
---|---|
[백준][Python] 17298. 오큰수 (0) | 2022.08.30 |
[백준][Python] 1264. 모음의 개수 (1) | 2022.08.29 |
[백준][Python] 10866. 덱 (0) | 2022.08.29 |
[백준][Python] 4101. 크냐? (0) | 2022.08.24 |