[백준] 1316 : 그룹 단어 체커

ByWindow·2021년 4월 25일
0

Algorithm

목록 보기
22/104
post-thumbnail

📝 문제

문제 바로가기
같은 알파벳이 연속으로 등장하고 전체 단어가 그런 것들로 이루어져 있으면 그룹 단어라고 한다.
String 처리하여 푸는 문제!
영어 소문자만 등장한다는 조건 하에 크기가 26인 배열을 정의하여 알파벳 체크를 했으면 됐는데 그러지 못해서 3중 for문으로 코드를 짰다ㅎㅎ
통과하기는 했지만 찜찜해서 다른 분의 코드도 가져와봤다.

📌 코드

  • 내가 짠 코드
/**
 * @Date: 2021-04-25
 * @Algorithm: string
 * @Title: 그룹 단어 체커
 */
package Baekjoon;


import java.util.*;
import java.io.*;

public class BOJ1316 {

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int answer = n;
        /**
         * 새로운 알파벳이 나오면 그 알파벳을 배열에 기록
         * input에서 현재 탐색하고 있는 인덱스의 char가 지금까지 배열에 기록한 배열의 char 중 마지막 것과 같은지 비교
         * 다르다면 다른 알파벳과 비교하고 같은 게 있으면 해당 input은 그풉단어가 아닌거고
         * 새로운 알파벳이면 새로운 알파벳이라고 배열에 기록
         */

        for(int i = 0; i < n; i++){
            st = new StringTokenizer(br.readLine());
            String input = st.nextToken();
            char[] alpha = new char[input.length()];
            alpha[0] = input.charAt(0);
            boolean breakPoint = false;
            int idx = 0; //현재 배열에 마지막으로 등록된 단어의 인덱스
            for(int j = 1; j < input.length(); j++){
                if(input.charAt(j) != alpha[idx]){
                    for(int k = 0; k < idx; k++){
                        if(input.charAt(j) == alpha[k]){
                            breakPoint = true;
                            break;
                        }
                    }
                    if(!breakPoint){
                        idx++;
                        alpha[idx] = input.charAt(j);
                    }
                }
                if(breakPoint) {
                    answer -= 1;
                    break;
                }
            }
        }
        System.out.println(answer);
    }
}
  • 2중 for문으로 끝낸 다른 분의 코드
import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int answer = 0;
		
		for(int i=0 ; i<N ; i++) {
			boolean[] chk_arr = new boolean[26];
			boolean flag = true;
			char[] tmp = br.readLine().toCharArray();
			char prev = tmp[0];
			for(char c : tmp) {
				if(c != prev) {
					if(!chk_arr[prev-97]) {
						chk_arr[prev-97] = true;
						prev = c;
					} else {
						flag = false;
						break;
					}
				}
			}
			
			if(flag && !chk_arr[tmp[tmp.length-1]-97])
				answer++;
		}
		
		System.out.print(answer);
	}
}
profile
step by step...my devlog

0개의 댓글