BOJ/백준-3986-python

cosmos·2022년 1월 4일
0
post-thumbnail

문제


풀이

  • 평석이는 제정신이 아니다.
  • 평석이는 단어 위로 아치형 곡성을 그어 같은 글자끼리 쌍을 짓기로 하였다.
  • 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'이다.
  • 평석이가 '좋은 단어'개수를 세는 것을 도와주자.
  • 첫째 줄에 단어의 수 N이 주어진다.
  • 다음 N개의 줄에는 A와 B로만 이루어진 단어가 한 줄에 하나씩 주어진다.
  • 단어의 길이는 2와 100,000사이이며, 모든 단어 길이의 합은 1,000,000을 넘지 않는다.
  • 첫째 줄에 좋은 단어의 수를 출력한다.

코드

# boj, 3986: 좋은 단어, stack, python3
def good_word(word):
    stack = []

    for x in word:
        if not stack:
            stack.append(x)
            continue
        if x != stack[-1]:
            stack.append(x)
        elif x == stack[-1]:
            stack.pop()

    return 0 if stack else 1

def solution(N):
    return sum([good_word(str(input())) for _ in range(N)])

if __name__ == '__main__':
    N = int(input())

    print(solution(N))

결과

출처 && 깃허브

boj
github

0개의 댓글