본문 바로가기

백준 문제풀이 코드저장소/Silver

Baekjoon 11478. 서로 다른 문자열의 개수 / Java

728x90

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

알고리즘 설명

문제 설명

문자열의 서로 다른 '부분 문자열'의 개수를 구하는 문제

코드 설명

모든 부분 문자열을 생성하고 집합자료구조에 부분문자열을 저장했다.
집합은 중복을 허용하지 않으므로, 집합의 크기가 문제의 답이 된다.

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

public class Main {
    public static String s;
    public static BufferedReader br;
    public static Set<String> arr;
    public static int res;

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        s = br.readLine();
        sol(s);
        System.out.println(res);
    }

    public static void sol(String s) {
        arr = new HashSet<String>();
        // 모든 시작접으로부터
        for (int i = 0; i < s.length(); i++) {
            // 가능한 모든 부분 문자열을 생성
            for (int j = i + 1; j <= s.length(); j++) {
                // Add the substring to the set
                arr.add(s.substring(i, j));
            }
        }
        res = arr.size();
    }
}
반응형