[백준(Baekjoon)][자바(java)] 11478 : 서로 다른 부분 문자열의 개수 / 집합과 맵

728x90

 

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

 

11478번: 서로 다른 부분 문자열의 개수

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

www.acmicpc.net

 

문제 풀이

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
		br.close();
		
		int n = s.length(), i, j;
		Set<String> set = new HashSet<>();
		set.add(s);
		for (i = 0; i < n; ++i)
			set.add(s.charAt(i) + "");
		for (i = 2; i < n; ++i)
			for (j = 0; j <= n-i; ++j)
				set.add(s.substring(j, j + i));

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

 

 

반응형