본문 바로가기
CodingTest

백준_11478번_서로 다른 부분 문자열_자바

by Lcoding 2024. 6. 24.
반응형

이번 문제는 11478번 서로 다른 부분 문자열 문제로 단순히 이중 for문과 Set 사용하여 풀이가 가능한 문제입니다.

 

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

 

 

입력 사항 -  

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

출력 사항 -  

첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.

 

주의 사항  - 

주의사항은 중복 제거를 위해 Set을 사용한다정도(?) 입니다.

 

풀이 방식 -

이중 for문을 돌려주며 문자열을 Set에 add 해줍니다, Set은 중복된 값이 들어갈 수 없기때문에 자동으로 중복제거가 이루어지기에 전부 add후에 최종적으로 set의 size를 체크하면 됩니다. 

 

 

로직 - 

 

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


public class Main {

    //ababc
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stk = new StringTokenizer(br.readLine());

        String s = stk.nextToken();
        Set<String> set = new HashSet<>();

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

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

반응형

# 로딩 화면 동작 코드(Code) 설정하기
loading