https://www.acmicpc.net/problem/11478
11478번: 서로 다른 부분 문자열의 개수
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.
www.acmicpc.net
✔️ 풀이과정
자바에서 지원하는 HashSet을 사용하면 쉽게 풀리는 문제이다.
먼저 문제에서 주어진 문자열을 입력하고, substring() 함수를 사용하여 문자열을 문제 조건에 맞게 자른 뒤 set에 추가한다. substring(int beginIndex, int endIndex) 이므로 인자 값에 문자열을 자를 시작부분과 마지막 부분을 반복문 통해 설정해주었다. 이때 문자열은 beginIndex ~ enlIndex-1까지 잘라준다는 점을 주의하자.
마지막으로 집합이 중복을 허용하지 않는다는 점을 이용하여 해당 HashSet의 크기를 출력해주면 된다.
✔️ 코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Set<String> set = new HashSet<>();
String str = br.readLine();
for(int i=0 ; i<str.length()+1 ; i++){
for(int j=i+1 ; j<str.length()+1 ; j++){
String s = str.substring(i, j);
set.add(s);
}
}
System.out.println(set.size());
}
}
'✔️ Algorithm > Baekjoon' 카테고리의 다른 글
[백준/Java] 11399번 : ATM (0) | 2023.03.04 |
---|---|
[백준/Java] 11047번 : 동전 0 (0) | 2023.03.04 |
[백준/Java] 24416번 : 알고리즘 수업 - 피보나치 수 1 (0) | 2023.02.20 |
[백준/Java] 1764번 : 듣보잡 (0) | 2023.02.18 |
[백준/Java] 2609번 : 최대공약수와 최소공배수 (0) | 2023.02.17 |
댓글