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

민영·2023년 6월 8일
0

[Algorithm] 백준

목록 보기
30/31
post-thumbnail

Problem

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

Approach & Logic

HashSet 사용

문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구해야 하는 문제이다.
=>
1) 저장해야 하는 값이 String형 하나이다. (인덱스같은 다른 정보가 필요하지 않음)
2) 중복값을 제거해야 한다.

==> HashSet 사용!

HashSet vs HashMap

1) 데이터 저장 형태

  • HashSet: 객체 자체를 저장
  • HashMap: Key-Value 쌍 형태로 데이터를 저장

2) 중복 값 처리

  • HashSet: 객체 자체를 저장하기 때문에 중복 허용X
  • HashMap: 중복 Key값은 허용X, 중복 Value값은 허용O

Code

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 str = br.readLine();
        HashSet<String> map = new HashSet<String>();
        
        for(int i=0; i<=str.length(); i++) {
            for(int j=i+1; j<=str.length(); j++) {
                map.add(str.substring(i, j));
            }
        }
        System.out.println(map.size());
    }
}
profile
그날의 기록

0개의 댓글

관련 채용 정보