CS/코딩테스트

백준 1141번: 접두사 - C++

싹난 감자 2025. 3. 25. 20:44

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();
}