[JAVA/1141번] 접두사*

고지훈·2021년 12월 31일
1

Algorithm

목록 보기
65/68
post-thumbnail

문제


입력 및 출력


풀이

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

class Main {
  public static int N;
  public static int result;
  public static void main(String args[]) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    // 단어의 개수 N, 결과 값
    N = Integer.parseInt(br.readLine());
    result = N;

    // 단어를 담을 배열 선언 및 단어 입력
    String[] strArray = new String[N];
    for(int i = 0; i < N; i++) {
      strArray[i] = br.readLine();
    }

    // 문자열의 길이 순으로 정렬
    Sort(strArray);

    // 각 단어가 접두어가 되는지 판단
    for(int i = 0; i < N; i++) {
      // 단어가 포함되는지 확인한느 변수
      boolean check = false;
      for(int j = i+1; j < N; j++) {
        // 비교가 될 단어
        String compWord = strArray[i];
        // 각 단어가 다른 단어에 접두어가 되는지 판단하기 위함
        for(int k = 0; k < compWord.length(); k++) {
          if(compWord.charAt(k) == strArray[j].charAt(k)) {
            check = true;
          }else {
            check = false;
            break;
          }
        }
        if(check) {
          break;
        }
      }
      if(check == true) {
        result--;
      }
    }
    // 결과 값 출력
    System.out.println(result);
  }

  // 버블정렬 알고리즘
  public static void Sort(String[] strArray) {
    for(int i = 0; i < N; i++) {
      for(int j = 0; j < N-1; j++) {
        if(strArray[j].length() > strArray[j+1].length()) {
          Swap(strArray, j, j+1);
        }
      }
    }
  }

  // Swap메소드
  public static void Swap(String[] strArray, int i, int j) {
    String temp = strArray[i];
    strArray[i] = strArray[j];
    strArray[j] = temp;
  }
}

결과 및 해결방법

[결과]

profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글