✔ 난이도 - Silver 4

처음에는 규칙이 있는 단순 구현문제라고 생각해서 엄청 헤맸었다.
그런나 스택을 사용한다면 바로 풀 수 있는 문제였다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int count = 0;
for (int i = 0; i < N; i++){
char[] array = br.readLine().toCharArray();
Stack<Character> stack = new Stack<>();
for (char ch : array){
if (!stack.isEmpty() && stack.peek() == ch){
stack.pop();
} else{
stack.push(ch);
}
}
if (stack.isEmpty()){
count++;
}
}
System.out.println(count);
}
}
api에서도 stack보다는 ArrayDeque를 권장하길래 덱을 사용해서 푼 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int count = 0;
for (int i = 0; i < N; i++) {
char[] array = br.readLine().toCharArray();
Deque<Character> deque = new ArrayDeque<>(); // Deque 사용
for (char ch : array) {
if (!deque.isEmpty() && deque.peekLast() == ch) { // 맨 뒤 요소와 현재가 같으면 pop
deque.removeLast();
} else {
deque.addLast(ch); // 맨 뒤에 push
}
}
if (deque.isEmpty()) {
count++;
}
}
System.out.println(count);
}
}
📌 https://velog.io/@seha01130/JAVA-스택Stack-정리
📌 https://velog.io/@seha01130/JAVA-덱Deque-정리

