Coding Test

CT | 백준 3986번 좋은 단어

이진유진 2024. 10. 28. 16:46
반응형

https://www.acmicpc.net/problem/3986

 

해당 문제를 풀때, 로직은 맞았지만, 

줄바꿈 문자를 처리하지 않아 오류가 발생하였습니다. 

 

밑은 해당 로직입니다 :)

이번 자료구조는 stack을 사용해서 문제를 해결하였습니다.

import java.util.*;

public class Main {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine(); // 숫자 입력 후 줄바꿈 문자 처리

        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < n; i++) { // n개만 입력 받기
            list.add(scanner.nextLine());
        }

        scanner.close();

        int cnt = 0;
        for (String s : list) {
            Stack<Character> stack = new Stack<>(); // 각 문자열마다 스택 초기화
            for (char ch : s.toCharArray()) {
                if (!stack.isEmpty() && stack.peek() == ch) {
                    stack.pop();
                } else {
                    stack.push(ch);
                }
            }
            if (stack.isEmpty()) {
                cnt++; // 스택이 비어있으면 "좋은 단어"
            }
        }
        System.out.println(cnt);
    }
}
반응형