import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
HashSet<String> set = new HashSet<String>();
String str = bufferedReader.readLine();
for(int i = 0; i <= str.length(); i++) {
for(int j = i+1; j <= str.length(); j++)
set.add(str.substring(i ,j));
}
bufferedWriter.write(String.valueOf(set.size()));
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
}
}
bufferedReader, bufferedWriter을 이용해서 빠른 입출력을 구현했다.
중복되는 데이터 없이 값을 저장하기 위해서 HashSet을 이용했다.
ArrayList를 이용할 수도 있지만, 시간 초과 문제가 발생한다.
HashSet이란
- 자바의 컬렉션 중 하나로 중복되지 않는 데이터를 순서에 상관없이 저장함
- Set 인터페이스의 구현 클래스
- 저장 순서가 유지되지 않음
- 비선형 구조로 저장 순서가 없으며 인덱스도 없음
substring이란
- String 클래스에 포함된 메서드
- 문자열에서 원하는 부분을 추출하고자 할 때 사용
- 찾을문자열.substring(찾을 문자열의 시작번호, 읽어들일 문자열 개수)
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 11729 하노이 탑 이동 순서 (0) | 2024.06.29 |
---|---|
[백준_JAVA_알고리즘] 1269 대칭 차집합 (2) | 2024.06.26 |
[백준_JAVA_알고리즘] 17219 비밀번호 찾기 (0) | 2024.06.05 |
[백준_JAVA_알고리즘] 2164 카드2 (0) | 2024.06.04 |
[백준_JAVA_알고리즘] 10773 제로 (0) | 2024.06.03 |