본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 11478번: 서로 다른 부분 문자열의 개수 [Java]

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

 

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

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

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String S = sc.next();
		
		Set <String> set = new HashSet<>();
		for(int i = 0; i < S.length(); i++) {
			for(int j = i + 1; j < S.length() + 1; j++) {
				set.add(S.substring(i, j));
			}
		}
		System.out.println(set.size());
	}
}

2. 설명

반복문을 이용하여 문자열의 부분 문자열을 구하여 HashSet에 추가합니다.