[백준(JAVA)] 3986번: 좋은 단어

세하·2025년 4월 25일

[백준] 문제풀이

목록 보기
45/94
post-thumbnail

문제

✔ 난이도 - 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);
    }
}

풀이2

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);
    }
}

TIL💡

📌 https://velog.io/@seha01130/JAVA-스택Stack-정리
📌 https://velog.io/@seha01130/JAVA-덱Deque-정리

0개의 댓글