코딩테스트/BOJ

[BOJ] 1141 접두사 - JAVA

5월._. 2022. 6. 23.
728x90

1. 문제

 

1141번: 접두사

접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant,

www.acmicpc.net

접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, gig, g}는 접두사X 집합이 아니다.

단어 N개로 이루어진 집합이 주어질 때, 접두사X 집합인 부분집합의 최대 크기를 출력하시오.


2. 풀이

1.  입력 문자열을 전부 리스트에 넣고 정렬한다.

2.  하나씩 탐색하면서 j문자열이 i 문자열로 시작한다면 리스트에서 i문자열을 지우고 i-1을 한 뒤 다시 탐색한다.

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

public class BOJ_1141_접두사 {
   public static void main(String[] args) throws IOException {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      int N = Integer.parseInt(in.readLine());
      ArrayList<String> list = new ArrayList<>(N);
      for(int i=0;i<N;i++) list.add(in.readLine());

      Collections.sort(list);

      for(int i=0;i<list.size();i++){
         for(int j=i+1;j<list.size();j++){
            if(list.get(j).startsWith(list.get(i))) {
               list.remove(i);
               i--;
               break;
            }
         }
      }

      System.out.println(list.size());
   }
}

3. 결과

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 1302 베스트셀러 - JAVA  (0) 2022.06.25
[BOJ] 1269 대칭 차집합 - JAVA  (0) 2022.06.24
[BOJ] 1059 좋은 구간 - JAVA  (0) 2022.06.22
[BOJ] 1064 평행사변형 - JAVA  (0) 2022.06.21
[BOJ] 1057 토너먼트 - JAVA  (0) 2022.06.20

댓글