알고리즘 문제(SOL)
[백준/3986/파이썬] 좋은 단어
Mapin
2021. 12. 16. 19:44
https://www.acmicpc.net/problem/3986
3986번: 좋은 단어
이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에
www.acmicpc.net
조건
- 단어 위로 아치형 곡선을 그어 같은 글짜끼리 쌍을 지었을때, 선끼리 교차하지 않으면서, 다른 한 개의 다른 위치에 있는 같은 글자와 짝을 지을 수 있다면, 좋은 단어임.
- 좋은단어의 갯수를 구하자.
입력
- A와B로만 이루어진 단어가 한줄에 하나씩 주어진다.
이번 문제도, 문제 자체가 , 이해하기가 어려웠음. 그래서, 진짜 위에 아치를 그려보면서 해보니까
이런말이란 걸 알았음. 밑은 좋은 단어의 예시임!
Input값이랑 stk의 TOP값이 다르면, stack에 넣고, stk의 TOP과 같으면, POP 해주고.
모든 연산을 했을때, 스택이 비어있으면 , 얘는 좋은 단어겠죠?
import sys
input = sys.stdin.readline
n= int(input())
words = [list(input().strip()) for _ in range(n)]
cnt=0
for word in words:
stk=[]
for i in range(len(word)):
if not stk:
stk.append(word[i])
else:
if stk[-1]==word[i]:
stk.pop()
else:
stk.append(word[i])
if not stk:
cnt+=1
print(cnt)
#이렇게 표현될 수 있을거 같음.