코테/백준

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

imname1am 2023. 4. 10. 11:14
반응형

🔺 문제

 

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

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

www.acmicpc.net

 

🔺 코드

import java.util.*;
import java.io.*;

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

        Set<String> set = new HashSet<>();

        for(int i = 0 ; i < len ; i++) {
            for(int j = i + 1 ; j <= len ; j++) {
                String str = S.substring(i, j);
                set.add(str);	
            }
        }

//      Iterator iter = set.iterator();
//      while(iter.hasNext()) {
//          System.out.println(iter.next());
//      }

        System.out.println(set.size());
    }
}
✅ 해결 아이디어
- substring으로 문자를 자르고, 그 값을 Set에 값 넣기 (Set은 중복X)

💥 유의사항

- j의 범위 : (i+1) ~ len까지


💬 느낀 점

쉬운 문제인데 이상하게 낑낑대느라 시간 생각보다 많이 걸림,,,

문자열 자르라고 하면 쫄기부터 하는 것 같은... ㅠ

 


(참고)

✔ HashSet 값 출력 = Iterator

 

[Java] 자바 HashSet 사용법 & 예제 총정리

HashSet이란? HashSet은 Set 인터페이스의 구현 클래스입니다. 그렇기에 Set의 성질을 그대로 상속받습니다. Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 또한 저장 순

coding-factory.tistory.com

 

반응형