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

2023. 8. 16. 11:53·프로그래밍 공부/백준 (C++)

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

 

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

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

www.acmicpc.net

 

 

해결방법

 

   처음엔 비트마스크 연산을 통해서 모든 부분집합을 구한 뒤(공집합 제외), 벡터에 넣은 뒤 unique 연산을 해서 서로 다른 부분집합의 개수만 출력하려 했는데, set 자료형의 특징을 사용하면 그럴 필요가 없다는 것을 깨달았다.

   set 자료형의 특징

  • 중복된 키를 허용하지 않음
  • 중복된 키를 insert 해도 추가되지 않음

   따라서 앞의 원소부터 차례대로 경우의 수를 구해준 뒤 무차별적으로 set 컨테이너에 넣으면, 서로 다른 부분집합만 컨테이너에 남게 된다.

 

 

#include <iostream>
#include <algorithm>
#include <set>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
  

    string str, tmp;
    cin >> str;

    set<string> _set;

    for (int i = 0; i < str.length(); ++i) {
        tmp = "";
        for (int j = i; j < str.length(); ++j) {
            tmp += str[j];
        //    cout << tmp << '\n';
            _set.insert(tmp);
        }
    }

    cout << _set.size();




    return 0;
}

 

저작자표시 (새창열림)

'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글

[C++/ 백준 1735번] 분수 합  (0) 2023.08.25
[C++/ 백준 13241번] 최소공배수  (0) 2023.08.17
[C++/백준 1764번] 듣보잡  (0) 2023.08.14
[C++/백준 10816번]  (0) 2023.08.14
[C++/백준 1620번] 나는야 포켓몬 마스터 이다솜  (0) 2023.08.14
'프로그래밍 공부/백준 (C++)' 카테고리의 다른 글
  • [C++/ 백준 1735번] 분수 합
  • [C++/ 백준 13241번] 최소공배수
  • [C++/백준 1764번] 듣보잡
  • [C++/백준 10816번]
Rocketbabydolls
Rocketbabydolls
Rocketbabydolls
  • Rocketbabydolls
    With The Lights Out
    Rocketbabydolls
  • 전체
    오늘
    어제
    • 전체글 (184)
      • 프로그래밍 공부 (117)
        • C (16)
        • Jumping into C++ (9)
        • MFC (C++) (1)
        • 자료구조 (1)
        • 알고리즘 (1)
        • 백준 (C++) (74)
        • 핸즈온 머신러닝 2판 (6)
        • Unseen 3기 준비 (4)
        • 원티드 포텐업 게임 개발자 양성과정 2기 (4)
      • 언리얼엔진5 (63)
        • [Part1] 이득우의 언리얼 프로그래밍 (12)
        • [Part2] 이득우의 언리얼 프로그래밍 (2)
        • [Part2 복습] 이득우의 언리얼 프로그래밍 (3)
        • [Part3] 이득우의 언리얼 프로그래밍 (14)
        • [Part4] 이득우의 언리얼 프로그래밍 (0)
        • FPS 게임 1인 프로젝트 (6)
        • 각종 지식 (11)
        • 블루프린트 Paper2D 로 게임 만들기 (14)
        • 팀 프로젝트 (1)
      • 일상 (1)
      • ETC (1)
        • 맥북 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      실전 C프로그래밍
      언리얼엔진 eqs 커스텀
      실전C프로그래밍 실습문제
      실전C프로그래밍
      핸즈온 머신러닝
      언리얼엔진
      언리얼엔진5 fps 프로젝트
      C언어 실습문제
      언리얼엔진 eqs c++
      실전 C프로그래밍 실습문제
      c언어
      오블완
      실전 C 프로그래밍
      c++ 17298
      언리얼엔진 eqs generator
      실전 C프로그래밍 나중채
      언리얼엔진5
      핸즈온 머신러닝 2판
      실전C프로그래밍 나중채
      티스토리챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    Rocketbabydolls
    [C++/백준 11478번] 서로 다른 부분 문자열의 개수
    상단으로

    티스토리툴바