백준 1235 java : 구현, set

magicdrill·2025년 7월 25일

백준 문제풀이

목록 보기
640/673

백준 1235 java : 구현, set

set의 특징을 이용해 문제를 풀이한다. set은 중복을 허락하지 않는다.
매 순회마다 set 자료구조를 만들고 문자열의 len - k부터 시작하는 부분문자열을 삽입한다. set 자료구조의 크기가 문자열 배열의 크기와 같다면 중복 저장이 없다는 뜻이고, 이는 생성된 부분문자열들이 전부 달라서 식별할 수 있다는 뜻이다.

import java.util.*;

public class BJ1235 {
    static Scanner sc = new Scanner(System.in);
    static String [] strings;

    public static void main(String[] args) {
        inputData();
        System.out.println(findAnswer());
    }

    public static void inputData(){
        int i;

        strings = new String[sc.nextInt()];
        for(i = 0; i < strings.length; i++){
            strings[i] = sc.next();
        }
    }

    public static int findAnswer() {
        int len = strings[0].length();// 문자열의 길이

        for (int k = 1; k <= len; k++) {
            Set<String> set = new HashSet<>();// set을 매 반복마다 생성

            for (String s : strings) {
                set.add(s.substring(len - k));
            }
            System.out.print("문자열 길이 : " + (len - k) + " : ");
            for(String temp : set){
                System.out.print(temp + " ");
            }
            System.out.println();

            if (set.size() == strings.length) {
                //set의 크기 == 저장된 배열의 크기 : 중복된 문자열이 하나도 없음
                System.out.print("종료 조건 만족 : ");
                for(String temp : set){
                    System.out.print(temp + " ");
                }
                System.out.println();
                return k;
            }
        }

        return len;// 모든 문자가 필요한 경우
    }
}

0개의 댓글