본문 바로가기
백준(Java)/23년 3월

[Java] 백준 - 11478번: 서로 다른 부분 문자열의 개수

by C0MPAS 2023. 3. 30.

3월 30일(목) - 집합과 맵(11478번)

 

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

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

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

1. Hashset을 활용하기에 좋은 문제라는 판단이 들어서 사용했다

-> 하지만 str.substring 이나 set.add 같은 매서드활용은 아직 익숙치가 않아서 버벅거렸다

-> 더 많은 문제들을 풀어보면서 자연스럽게 떠오르게 만들어야할듯

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashSet;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        HashSet<String>set = new HashSet<>();

        for(int i=0; i<str.length(); i++)
        {
            for(int j=i+1; j<str.length()+1; j++)
            {
                set.add(str.substring(i,j));
            }
        }
        System.out.println(set.size());
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

댓글