본문 바로가기

Java/백준

[JAVA] 백준 11478 서로 다른 부분 문자열의 개수

https://www.acmicpc.net/problem/11478

 

11478번: 서로 다른 부분 문자열의 개수

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

www.acmicpc.net

 

풀이 과정 

 

- 이중 반복문을 이용해 substring으로 자른 문자열을 HashSet에 저장 

- HashSet의 size 출력

 

String substring()

https://velog.io/@chosj1526/JAVA-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0-substring-split

 

velog

 

velog.io

 

- 파라미터 2개는 시작 지점과 끝지점을 전달받아 시작지점부터 끝지점 -1까지 리턴

 

문자열변수명.substring(시작 지점, 끝지점)

 

- 시작지점 ~ (끝지점-1)까지 자름 

 

String[ ] split()

 

- 특정 문자열을 파라미터로 받아서 해당 문자열을 기준으로 문자열을 잘라 String 배열에 넣어줌

 

String[] strarr = 문자열변수명.split(기준문자)

 

 

정답

 

 

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 br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        HashSet<String> set = new HashSet<String>();
        String s = br.readLine();
        
        for(int i=0; i<s.length(); i++)
        {
            for(int j=i+1; j<=s.length(); j++)
            {
                String sub = s.substring(i,j);
                set.add(sub);
            }
        }
        
        bw.write(set.size()+"");
        
        bw.flush();
        bw.close();
    }
        
}

 

'Java > 백준' 카테고리의 다른 글

[JAVA] 백준 2164 카드 2  (0) 2024.02.14
[JAVA] 백준 18258 큐 2  (0) 2024.02.14
[JAVA] 백준 1269 대칭 차집합  (1) 2024.02.13
[JAVA] 백준 13909 창문 닫기  (0) 2024.02.13
[JAVA] 백준 1764 듣보잡  (0) 2024.02.13