반응형
코드
n = int(input())
ans = 0
for i in range(n):
inp = input()
stack = []
for j in inp:
if len(stack) == 0:
stack.append(j)
else:
if j == "A":
if stack[-1] == "B":
stack.append(j)
elif stack[-1] == "A":
stack.pop()
elif j == "B":
if stack[-1] == "A":
stack.append(j)
elif stack[-1] == "B":
stack.pop()
if len(stack)==0:
ans+=1
print(ans)
설명
일단 이 문제는 괄호 문제라 생각하고 접근하면 된다. 선이 교차한다는 것은 결국 괄호의 짝이 맞지 않다는 것과 같기 때문이다. 그러나 괄호와 같이 여는 괄호, 닫는 괄호가 구분되는 것이 아니기 때문에 조금 더 간단하다.
우선 스택이 비어있을 때 A,B가 오면 그냥 스택에 push해준다.
만약 A가 나왔을 때 스택의 가장 마지막 값이 A이면 그 값을 pop해주고 만약 B이면 A를 스택에 push 해준다. B가 나왔을 때도 마찬가지이다.
마지막에 스택에 값이 존재하지 않으면 '좋은 단어'이기 때문에 ans 변수를 1 증가시켜준다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 5397번 키로거 (0) | 2022.02.15 |
---|---|
[백준][Python] 1021번 회전하는 큐 (0) | 2022.02.15 |
[백준][Python] 4949번 균형잡힌 세상 (0) | 2022.02.14 |
[백준][Python] 22942번 데이터 체커 (0) | 2022.02.11 |
[백준][Python] 10845번 큐 (0) | 2022.02.11 |
댓글