본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 3986 좋은 단어

by YoonJong 2022. 9. 9.
728x90

 

스택을 활용해서 풀어야하는 문제이다.

 

for (int j = 0; j < str.length(); j++) {
    if (st.isEmpty() || (st.peek() != str.charAt(j))) {
        st.push(str.charAt(j));
    } else {
        st.pop();
    }
}

 

알파벳을 넣을때의 조건이다.

처음에는 스택이 아예 비어있으니, peek을 사용할 수 없다.

따라서 isEmpty() 를 추가해서 비교 후 추가할 수 있게 작성했다.

push 할 조건이 아니라면 ( peek했는데 삽입할 알파벳과 같다면 )  pop 으로 꺼내준다

 

if (st.isEmpty()) {
    count++;
}

비어있으면 조건에 만족하기 때문에, count 를 추가시켜준다

 

package BAEKJOON.Silver.Ⅳ;

import java.util.Scanner;
import java.util.Stack;

/**
 * 시간 제한   메모리 제한 제출 정답 맞힌 사람  정답 비율
 * 1 초 256 MB 12355  6568   5305   53.678%
 */
public class NO3986 {
    public static void main(String[] args) {

        Stack<Character> st = new Stack<>();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;

        for (int i = 0; i < n; i++) {
            String str = sc.next();

            for (int j = 0; j < str.length(); j++) {
                if (st.isEmpty() || (st.peek() != str.charAt(j))) {
                    st.push(str.charAt(j));
                } else {
                    st.pop();
                }
            }

            if (st.isEmpty()) {
                count++;
            }
            st.clear();
       }
        System.out.println(count);
    }
}
728x90

'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글

백준 JAVA 1012 유기농 배추  (0) 2022.09.10
백준 JAVA 1629 곱셈  (0) 2022.09.09
백준 JAVA 1213 팰린드롬 만들기  (0) 2022.09.08
백준 JAVA 3085 사탕 게임  (0) 2022.09.06
백준 JAVA 2979 트럭 주차  (0) 2022.09.05

댓글