https://www.acmicpc.net/problem/3986
1. 아이디어
단어를 아치형 곡선으로 쌍을 짓는다는 점에서 Stack 자료구조를 활용하면 간단하게 해결할 수 있다.
2. 문제풀이
각 단어에 대해 Stack이 비어있거나 Stack의 peek와 일치하지 않는 경우 Stack에 넣고 일치하면 Stack에서 빼는 걸 반복했을 때 좋은 단어는 전부 쌍을 이뤄서 Stack이 비게되는 점을 활용해서 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0;
for (int i = 0; i < N; i++) {
Deque<Character> stack = new ArrayDeque<>();
char[] input = br.readLine().toCharArray();
for (char c : input) {
if (stack.isEmpty()) stack.push(c);
else {
if (stack.peek() != c) stack.push(c);
else stack.pop();
}
}
if (!stack.isEmpty()) continue;
cnt++;
}
System.out.println(cnt);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 9012번 - 괄호 [Java] (0) | 2025.02.11 |
---|---|
[백준] 4949번 - 균형잡힌 세상 [Java] (0) | 2025.02.11 |
[백준] 10799번 - 쇠막대기 [Java] (0) | 2025.02.11 |
[백준] 2573번 - 빙산 [Java] (0) | 2025.02.11 |
[백준] 14503번 - 로봇 청소기 [Java] (0) | 2025.02.11 |