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
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 23288 주사위 굴리기2 (0) | 2023.07.16 |
---|---|
[python] 백준 1431 시리얼 번호 (0) | 2023.07.11 |
[python] 백준 21610 마법사 상어와 비바라기 (0) | 2023.07.09 |
[python] 백준 21609 상어 중학교 (0) | 2023.07.08 |
[python] 백준 2159 케익 배달 (0) | 2023.07.07 |
댓글