sm 기술 블로그
96. 11478(서로 다른 문자열의 개수) 본문
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashSet<String> set = new HashSet<>();
String S = br.readLine();
for(int i = 0; i < S.length(); i++) {
for(int j =i; j < S.length(); j++) {
set.add(S.substring(i,j+1));
}
}
System.out.println(set.size());
}
}
문제요약
문자열이 들어오면 각 부분을 쪼개서 개수를 세시오. 단, 중복은 제외.
해설
문자열을 한글자부터 차근차근 자르기를 이용하면 된다.
자바에서 문자열을 자르는 방법은 substring을 이용하면 된다.
for(int i = 0; i < S.length(); i++) {
for(int j =i; j < S.length(); j++) {
set.add(S.substring(i,j+1));
}
}
Hello가 들어왔다고 생각해보자.
그러면 set에 들어가는 값은
H
He
Hel
Hell
Hello
e
el
ell
ello
l
ll
llo
l
lo
o
다음과 같이 값이 들어온다.
집합의 특징은 중복을 제거하고, 순서에대한 보장이 없다.
따라서 중복으로 값이 들어온다고 해도, 중복을 제거하기 때문에 문제되지 않는다.
'문제 > 백준_자바' 카테고리의 다른 글
98. 3009(네 번째 점) (0) | 2022.06.21 |
---|---|
97. 1085(직사각형에서 탈출) (0) | 2022.06.21 |
95. 1269(대칭 차집합) (0) | 2022.06.21 |
94. 1764(듣보잡) (0) | 2022.06.20 |
93. 10816(숫자 카드2) (0) | 2022.06.20 |
Comments