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();
}
}
반응형
'백준 문제풀이 코드저장소 > Silver' 카테고리의 다른 글
Baekjoon 2503. 숫자 야구 / Python, Java (0) | 2024.07.12 |
---|---|
Baekjoon 4307. 개미 / Java (0) | 2024.07.07 |
Baekjoon 16951. 블록 놀이 / Java (0) | 2024.07.03 |
Baekjoon 21966. (중략) / Java (0) | 2024.07.03 |