상세 컨텐츠

본문 제목

< 백준 BaekJoon : 11478번 서로 다른 문자얼의 개수> C++

C++/Baekjoon

by J2on 2023. 8. 4. 23:23

본문

문제

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

 

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

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

www.acmicpc.net

 

풀이

 

Disjoint한 subset의 개수를 찾는 문제.

 

정말 단순하게 subStr을 이용해서 vector로 중복제거를 해주었다.

 

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

int main(){
  string str;
  vector<string> subStrVec;
  cin >> str;
  for(int i=1; i<= str.size(); i++){
    for(int j=0; j <= str.size() - i; j++){
      subStrVec.push_back(str.substr(j,i));
    }
  }

  sort(subStrVec.begin(), subStrVec.end());
  subStrVec.erase(unique(subStrVec.begin(), subStrVec.end()), subStrVec.end());

  cout << subStrVec.size();
}

 

그닥 효율적이지는 않은 코드,,,

 

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%EB%B0%B1%EC%A4%80/Silver/11478.%E2%80%85%EC%84%9C%EB%A1%9C%E2%80%85%EB%8B%A4%EB%A5%B8%E2%80%85%EB%B6%80%EB%B6%84%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98%E2%80%85%EA%B0%9C%EC%88%98

 

관련글 더보기

댓글 영역