이번 문제는 11478번 서로 다른 부분 문자열 문제로 단순히 이중 for문과 Set 사용하여 풀이가 가능한 문제입니다.
https://www.acmicpc.net/problem/11478
입력 사항 -
- 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.
출력 사항 -
첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.
주의 사항 -
주의사항은 중복 제거를 위해 Set을 사용한다정도(?) 입니다.
풀이 방식 -
이중 for문을 돌려주며 문자열을 Set에 add 해줍니다, Set은 중복된 값이 들어갈 수 없기때문에 자동으로 중복제거가 이루어지기에 전부 add후에 최종적으로 set의 size를 체크하면 됩니다.
로직 -
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class Main {
//ababc
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk = new StringTokenizer(br.readLine());
String s = stk.nextToken();
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());
}
}
'CodingTest' 카테고리의 다른 글
백준_2075번_N번째 큰 수_자바 (0) | 2024.03.18 |
---|---|
백준_21921번_블로그_자바 (0) | 2024.03.11 |
백준_4659번_비밀번호 발음하기_자바 (0) | 2024.03.03 |
백준_10431번_줄세우기_자바 (2) | 2024.03.01 |
백준_9655번_돌 게임_자바 (0) | 2024.02.29 |