
주어진 문자열의 서로 다른 부분 문자열의 갯수를 출력하는 문제이다.
String.substring(i, j);
해당 메소드는 문자열 String의 i번째부터 j-1번째 문자열을 읽어준다.
예를들어, 문자열 s = abc라면
i=0, j=1 -> "a"
i=0, j=2 -> "ab"
i=0, j=3 -> "abc"
i=1, j=2 -> "b"
i=1, j=3 -> "bc"
i=2, j=3 -> "c"
위 정보를 바탕으로 설계한 코드는 다음과 같다.
import java.io.*;
import java.util.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
Set<String> set = new HashSet<>();
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<=s.length(); j++){
set.add(s.substring(i, j));
}
}
System.out.println(set.size());
}
}
맞았습니다!!