백준 11478 서로 다른 부분 문자열의 개수 / C++

이유참치·2025년 12월 15일

백준

목록 보기
141/249

문제 : 11478

풀이 point

부분 문자열의 개수를 구한 뒤 set에 집어넣으면 중복이 제거된다.
set의 크기를 출력하면 된다.

풀이 방법

부분 문자열은 C++의 substr함수를 통해 구할 수 있다.
substr(시작인덱스, 부분 문자열 길이)이다.

부분문자열의 길이가 1 2 3 ... S의 길이이기 때문에 for문을 적절히 조절하여 구할 수 있다.

코드

//백준, 11478 서로 다른 부분 문자열의 개수

#include <iostream>
#include <set>

std::set<std::string> set;

int main (){

    std::string s;
    std::cin >> s;
    for(int i{1}; i<=s.size(); ++i){ //길이까지 진행해야지 끝까지 나옴
        for(int j{0}; j<=s.size()-i; ++j){
            set.insert(s.substr(j, i));
        }
    }

    std::cout << set.size();
    
    return 0;
}
profile
임아리 - 대학생

0개의 댓글