반응형
문제 출처: https://www.acmicpc.net/problem/11478
11478번: 서로 다른 부분 문자열의 개수
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.
www.acmicpc.net
1. 문제 접근방식
먼저 가능한 부분 문자열을 모두 구하고 중복을 제거하는 방식을 생각해보았다.물론 배열 내부에 이미 존재하는지의 여부에 따라 배열에 넣는 방법도 있지만 Java의 HashSet을 이용하여 좀 더 편하게 중복을 제거하였다.
※ HashSet 이란?
Set 인터페이스의 구현 클래스이다. 저장 순서가 유지되지 않으며 중복을 허용하지 않는다.
2. 내가 푼 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class boj11478 {
static String S;
static Set<String> set;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
input();
solve(S);
System.out.println(sb.toString());
}
static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
S = br.readLine();
set = new HashSet<>();
}
static void solve(String str) {
for (int i = 0; i <= str.length(); i++) {
for (int j = i + 1; j <= str.length(); j++) {
set.add(str.substring(i, j));
}
}
sb.append(set.size());
}
}
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Baekjoon/백준] 10974 JAVA (0) | 2022.03.12 |
---|---|
[Baekjoon/백준] 17614 JAVA (0) | 2022.03.09 |
[Baekjoon/백준] 1120 JAVA (0) | 2022.03.08 |
[Baekjoon/백준] 1476 JAVA (0) | 2022.03.06 |
[Baekjoon/백준] 4796 JAVA (0) | 2021.08.27 |