티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/3986
3986번: 좋은 단어
이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에
www.acmicpc.net
2. 문제 풀이
#include <iostream>
#include <bits/stdc++.h>
#pragma warning (disable:4996)
using namespace std;
int ans;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
while (n--) {
stack<int> stk;
string s; cin >> s;
for (int i = 0; i < s.size(); i++) {
if (stk.empty())
stk.push(s[i]);
else if (stk.top() == s[i])
stk.pop();
else
stk.push(s[i]);
}
if (stk.empty())
ans++;
}
cout << ans;
}
2. 문제 평가 및 해설
스택을 이용한 간단한 문제이다.
스택, 큐 그리고 덱은 크게 두 가지 유형이 있는 것 같다.
1. 쌓아가면서 비교하기
2. 일단 먼저 쌓고, 비교하기
이번 문제의 경우는 전자이다. 문제 풀이는 다음과 같다.
1. 문자열을 받고, 스택을 쌓아가면서 스택의 top과 문자열을 비교하면서 나아가면 된다.
2. 스택의 top과 문자가 일치한다면, 스택을 pop하고, 그렇지 않다면 push 해준다.
3. 여기서 주의해야할 점은 for문에서 문자열을 처음 비교할 때, 스택이 비워져있으므로 stk.top()을 실행한다면 런타임 에러가 발생한다. 자료구조와 관련된 문제를 풀 때 가장 중요한 부분이다.
4. 마지막으로, 스택이 비워있다면 좋은 단어이므로 ans++을 해준다.
'백준(C++) > 문제풀이' 카테고리의 다른 글
[백준 2178/C++] 미로 탐색 (0) | 2023.07.28 |
---|---|
[백준 1926/C++] 그림 (0) | 2023.07.28 |
[백준 4949/C++] 균형잡힌 세상 (0) | 2023.07.19 |
[백준 5430/C++] AC (0) | 2023.07.18 |
[백준 1021/C++] 회전하는 큐 (0) | 2023.07.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ViewBinding
- 백준1158
- 백준 5430
- 알고리즘 풀이
- 알고리즘 정리
- 백준 7576
- 백준 4179
- 백준 3986
- android studio
- #include<bits/stdc++.h> # Visual studio #코딩테스트 꿀팁 #알고리즘 풀이
- C++ #알고리즘 #코딩테스트
- 백준 2493
- 코테
- 백준 2164
- 백준 1697
- 안드로이드 스튜디오
- 백준 7569
- AAR metadata 에러
- 백준 2178
- C++ #알고리즘 #연결리스트
- 백준 4949
- C++
- 알고리즘 #백준 3273 #C++
- 코딩테스트
- 백준 #알고리즘 풀이 #백준 1475
- 알고리즘
- constraint missing 오류
- Render Problem
- 백준 1021
- 문제 유형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함