알고리즘/백준알고리즘

[1141/Java] 접두사

HoSeongYu 2021. 12. 31. 15:32

문제


입력 및 출력


풀이

import java.util.*;
class Main {  
  public static void main(String args[]) {
    Scanner scan = new Scanner(System.in);

    // 배열의 크기
    int N = scan.nextInt();
    scan.nextLine();

    // 배열 입력 값
    String[] array = new String[N];
    for(int i=0; i<N; i++){
      array[i] = scan.nextLine();
    }

    // 입력값 array를 길이 기준으로 정렬하는 Sort 메소드 호출
    selectSort(array, N);

    // 정렬된 array를 순서대로 접두사가 있는지 비교 Check 메소드 호출
    List<String> list = check(array, N);

    // 결과값
    int result = list.size();
    System.out.println(result);

  } 

  // 정렬 메소드
  public static void selectSort(String[] array, int N){
    for(int i=0; i<N; i++){
      for(int j=1; j<N-i; j++){
        if(array[j-1].length() > array[j].length()){
          String temp = array[j-1];
          array[j-1] = array[j];
          array[j] = temp;
        }
      }
    }
  }

  // 접두사 check 후 접두어x 집합 list에 담기 
  public static List<String> check(String[] array, int N){
    // 접두사X 집합인 부분집합
    List<String> list = new ArrayList<>();

    // 접두어x 집합일 경우 list에 추가
    for(int i=0; i<N; i++){
      Boolean result1 = true;
      for(int j=i+1; j<N; j++ ){
        if(array[j].indexOf(array[i]) == 0){
          result1 = false;
        }
      }
      if(result1){
        list.add(array[i]);
      }
    }
    return list;
  }
}

결과 및 해결방안

[결과]

[해결방안]