https://www.acmicpc.net/problem/3986
문제분석
A와 B로만 이루어진 문자열이 입력으로 주어진다.
입력으로 주어진 문자열이
1. A는 A끼리, B는 B끼리 선으로이어졌을 때, 선이 겹치면 안된다.
2. 문자하나는 문자 하나에만 선을 이을 수 있다.
위 조건을 만족하는 문자열이 몇개인지를 출력한다.
문제풀이
문자끼리 이어지는 경우는, 바로 직전에 같은 문자가 나타났을 때 이므로 스택을 이용하여 풀수 있다.
문자열의 문자를 하나씩 스택에 push하면서, 스택 맨위의 문자와 같은 문자가 등장했을 때 스택에서 pop하고 이어진 선의 개수인 변수를 +1 한다.
이어진 선의 개수가 문자열의 길이의 반이면 좋은단어의 개수를 +1 한다.
input = __import__('sys').stdin.readline
n = int(input().strip())
numGood = 0
for i in range(n):
word = input().strip()
stk = []
count = 0
for c in word:
if len(stk) != 0 and c == stk[-1]:
stk.pop()
count += 1
else:
stk.append(c)
if count == len(word)/2:
numGood += 1
print(numGood)
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[BOJ/C] 2789 유학 금지 (0) | 2023.01.30 |
---|---|
[백준/Python] 10773번 제로 (1) | 2023.01.30 |
[백준/python] 1157 단어공부 (0) | 2023.01.29 |
[백준/Python] #11652 카드 (0) | 2023.01.29 |
[백준/python] 14561번: 회문 (0) | 2023.01.29 |