반응형
문제
https://www.acmicpc.net/problem/3986
코드
n = int(input())
cnt = 0
for _ in range(n):
s = input()
stack = []
for i in s:
if stack and stack[-1] == i:
stack.pop()
else:
stack.append(i)
if not stack:
cnt += 1
print(cnt)
설명
우선 n을 받아주고,
정답을 카운트할 cnt를 만들어준다.
그리고 n의 수만큼 반복해서 반복문을 돌린다.
반복문에서 각각 문장을 입력받아준다.
그리고 문장을 처리할 스택을 하나 만들어준다.
좋은 단어의 조건을 만족하려면
같은 단어 사이에 다른 단어가 없거나,
짝수 개로만 존재해야 한다.
ex) abba, aabb 등
따라서 스택을 만들어서 각 단어를 하나씩 넣어주고,
stack의 제일 끝단어(앞에서 처리되지 않은 단어)가 현재의 단어와 같다면 스택에서 pop을 해준다.
그렇지 않은 경우는 입력되는 단어를 스택에 추가해 준다.
모든 과정이 종료되고 스택이 남아있지 않다면 cnt를 1 늘려준다.
최종적으로 cnt를 출력해 준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 11000: 강의실 배정 (0) | 2023.07.11 |
---|---|
[파이썬, Python] 백준 1149: RGB거리 (0) | 2023.07.10 |
[파이썬, Python] 백준 1439: 뒤집기 (0) | 2023.07.06 |
[파이썬, Python] 백준 1541: 잃어버린 괄호 (0) | 2023.07.05 |
[파이썬, Python] 백준 3273: 두 수의 합 (0) | 2023.07.04 |