1일 1백준

1일 1백준 : 1316번 그룹 단어 체커

gaonhae 2022. 6. 14. 11:51

1일 1백준 2일차, 오늘 푼 문제는 1316번 문제인 "그룹 단어 체커"이다.

 

 

 

 

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

 

처음엔 배열을 이용해서 그동안 문자열에서 한 번도 등장하지 않은 char는 배열에 추가하고

이미 배열에 있는 char를 다시 추가하려고 하면 return false를 하려고 했으나

String의 contains 메서드를 이용하면 훨씬 간단하게 해결할 수 있다는 것을 깨닫고 문자열을 이용하여 해결하였다

 

 

 

역시 코딩을 잘하려면 메서드를 잘 활용할 줄 알아야 하는 것 같다

 

 

 

 

 

 

 

 

 

아래로 내리면 정답 코드가 나옵니다. 문제를 아직 풀지 않으신 분들은 주의해주세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

import java.util.Arrays;
import java.util.Scanner;

public class pro1316 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int a = Integer.parseInt(sc.nextLine());
        int count = 0;
        String word = "";

        for(int i = 0 ; i < a ; i++ ){
            word = sc.nextLine();
            if(Func.groupWord(word)){
                count++;
            }
        }

        System.out.println(count);

    }
}

class Func{
    public static boolean groupWord(String word){

        int count = 0;
        String sentence = "";

        for(int a = 0 ; a < word.length() ; a++){
                if(a != word.length()-1 && word.charAt(a) != word.charAt(a+1)){
                    if(sentence.contains(Character.toString(word.charAt(a)))){
                        return false;
                    }
                    else{
                        sentence += Character.toString(word.charAt(a));
                    }
                }
                else if(a == word.length()-1){
                    if(sentence.contains(Character.toString(word.charAt(a)))){
                        return false;
                    }
                    else{
                        sentence += Character.toString(word.charAt(a));
                    }
                }
        }
        return true;
    }
}