백준 11478

Jb·2024년 3월 21일

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        //set을 사용하는 이유?
        //중복제거
        Set<String> substrings = new HashSet<>();

        for (int i = 0; i < s.length(); i++) {
            for (int j = i + 1; j <= s.length(); j++) {
                substrings.add(s.substring(i, j));
            }
        }

        System.out.println(substrings.size());
    }
}

생각의 흐름

1.문자열을 어떻게 처리를 할까?
2.해시맵을 이용하여 키 벨류 값을 받아 키값으로 부분집합을 생성하여 해시맵을 생성하여 거기에 집어 넣으려고함
3.너무 복잡함 해시셋으로 선회
4.String의 subString을 이용
5.set은 자동으로 중복제거가 있어서 해시셋에 저장하여 크기를 반환하면 정답

느낀점

음 뭔가 체계가 잡힌거같은 느낌인데 능숙하게 딱딱 어떤게 좋은 방향인지는 아직 무리인 것 같다.

0개의 댓글