https://www.acmicpc.net/problem/3986
3986번: 좋은 단어
이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에
www.acmicpc.net
문제분석
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 |