문제

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

공부한 부분

최초 생각 : 해시에다가 일단 넣고, 스택에다가 넣은거 빼면서 비교하자
1. 해시셋에 입력, 이때 스택에도 같이 넣어줌 (스택 사용해서 문자 연속으로 나오는것 확인을 위해)

2. 스택에서 알파벳을 한개씩 빼서 이전의 알파벳과 같은지 검사해서 다른 경우의 개수를 세어준다.

3. 이때의 개수가 해시셋에 있는 개수와 같으면 그룹단어

Java Code

package week2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Stack;
import java.util.StringTokenizer;

public class boj1316 {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st;
        //해시에다가 일단 넣고, 스택에다가 넣은거 빼면서 비교?

        int answer = 0;
        for (int i = 0; i < N; i++) {

            st = new StringTokenizer(br.readLine());

            String input = st.nextToken();
            char[] arr = input.toCharArray();
            HashSet<Character> hs = new HashSet();
            Stack<Character> stack = new Stack<>();

            for (int j = 0; j < arr.length; j++) {
                hs.add(arr[j]);
                stack.push(arr[j]);
            }

            char temp1 = stack.pop();
            int count = 0;

            while (!stack.isEmpty()){

                char temp2 = stack.pop();
                if (temp1 != temp2) {
                    count++;
                    //System.out.println("count "+count);
                }
                temp1 = temp2;
            }

            if (count == hs.size()-1) {
                answer++;
            }


        }
        System.out.println(answer);
    }
}

'Algorithm > BOJ' 카테고리의 다른 글

[백준 1189] 컴백홈 (Java)  (0) 2023.02.07
[백준 2164] 카드2 (Java)  (0) 2023.02.07
백준 11660. 구간 합 구하기 5 (Java)  (0) 2022.08.12
백준 11659. 구간 합 구하기 4 (Java)  (0) 2022.08.12
백준 1546번. 평균 (Java)  (0) 2022.08.12

+ Recent posts