본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 3986 좋은 단어

by Alan_Kim 2023. 7. 10.
728x90
반응형

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

 

3986번: 좋은 단어

이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에

www.acmicpc.net

 

문제 해결

  • 중요한 것은 좋은 단어가 될려면 단어 안의 모든 알파벳이 짝을 만들어 아치형 곡선을 만들 수 있어야 하며 모두 겹치지 않아야 한다는 것이다.
  • 왼쪽부터 오른쪽으로 단어의 알파벳을 보면서 짝이 없는 것을 stack안에 쌓아 놓고 만약 stack[-1]과 알파벳이 같으면 같이 아치형 곡선을 만들면 되므로 stack.pop()으로 짝을 이루고 사라지게 한다.
  • 만약 단어 끝까지 보고나서 stack안에 쌓인 것이 없으면 모두 짝을 이뤘다는 것이므로 '좋은 단어'이고 아니면 아닌 것이다.

 

 

CODE

n = int(input())
answer = 0
for _ in range(n):
    W = str(input().strip())
    stack = []
    for i in range(len(W)):
        if stack and stack[-1] == W[i]:
            stack.pop()
        else:
            stack.append(W[i])
    if not stack:
        answer += 1
print(answer)
728x90
반응형

댓글