https://www.acmicpc.net/problem/1141
정렬하지 않아도 결과는 같게 나올 수 있지만 길이 순으로 정렬하면 더 효율적인 코드가 된다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int wordNum, wordCnt=0;
string word;
vector<string> words;
cin >> wordNum;
for (int i = 0; i < wordNum; ++i)
{
cin >> word;
words.push_back(word);
}
sort(words.begin(), words.end(),
[](const std::string& a, const std::string& b) {
return a.size() < b.size(); // 길이가 짧은 순으로 비교 기준 정의
});
for(int i = 0; i < words.size(); ++i)
{
for (int j = i+1; j < words.size(); ++j)
{
if (words[j].find(words[i]) == 0)
{
words.erase(words.begin()+i);
--i;
break;
}
}
}
cout << words.size();
}
'CS > 코딩테스트' 카테고리의 다른 글
백준 9494번: 균형잡힌 세상 - C++ 스택(Stack) (0) | 2025.03.25 |
---|---|
백준 2785번: 체인 - C++ 탐욕(Greedy)알고리즘 (0) | 2025.03.24 |
나머지 연산(%)의 분배법칙 (정리 필요) (0) | 2024.10.25 |