현재

[Java][BaekJoon][1316] 그룹 단어 체커 (★☆☆) 본문

알고리즘/백준

[Java][BaekJoon][1316] 그룹 단어 체커 (★☆☆)

AAAge 2023. 10. 6. 20:34

<구현해야 하는 요건>

1.단어가 주어졌을시, 중복을 체크한다.

2.서로 다른 단어가 나온 이후에 또 다시 이전에 나온 단어가 나올 시 카운트 하지 않는다.

 

<풀이 코드>

import java.util.Scanner;

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

        int N = Integer.parseInt(scn.nextLine());
       
        int groupWordCount = N;

       
        for ( int x = 0 ; x < N ; x++){
           
            String input = scn.nextLine();
           
            boolean alphabet[] = new boolean[26];
           
            for( int i = 0 ; i < input.length()-1; i++){
               
                if ( input.charAt(i) != input.charAt(i+1)){
                    if ( alphabet[input.charAt(i+1)-'a'] == true ){
                        groupWordCount--;
                        break;
                    }

                }

                alphabet[input.charAt(i)-'a'] = true;
               
            }
        }
        System.out.println(groupWordCount);
    }
}

<풀이 과정>

처음에는 중복이 아닌 과정을 체크하고, 중복이 아니면 카운트를 하려는 생각이였다.

하지만 코드의 양이 너무 많고, 어거지로 매번 같은 패턴을 반복하는 것 같아서 중간에 포기하고 다른 사람의 풀이 과정을 찾았다. 얼추 if문을 통해서 중복을 체크하는것 까지는 비슷했지만, 일단 카운트를 역으로 세서 중간에 반복문을 탈출하는 과정을 통해 깔끔하게 진행하였다.

남의 코드를 보고 이해한것 뿐이지만 반복 숙달하여 내것으로 만들어야겠다.. 갈길이 멀다 .. ㅜ

 

<문제 출처>

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