백준

백준 1141 접두사, c++

2024. 3. 6. 19:31

 

 

 

작성한 코드는 다음과 같다.

단어를 사전식으로 sort해주고, 중첩for문을 이용해서 앞의 단어가 접두사형태로 완전히 겹치는 단어가 뒤에 있으면 false로 체크해준다.

마지막에 true로 남은 문자열만 세서 출력해주면 된다.

처음에는 그냥 배열 형태로 써서 오류가 났다. vector로 쓰니 해결되었다.

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

int main(){
    int n;
    cin >> n;
    
    vector<string> arr(n);
    for(int i=0; i<n; i++)
        cin >> arr[i];
    
    sort(arr.begin(), arr.end());
    
    vector<bool> same(n, true);
    
    for(int i=0; i<arr.size(); i++){
        for(int j=i+1; j<arr.size(); j++){
            if( arr[i] == arr[j].substr(0,arr[i].size()) ) {
                same[i] = false;
                break;
            }
        }
    }
    
    int count = 0;
    for(int i=0; i<n; i++){
        if(same[i] == true)
            count++;
    }
    
    cout << count;
    return 0;
}

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 16506 CPU, c++  (1) 2024.03.07
백준 3568 iSharp, c++  (0) 2024.03.07
백준 12026 BOJ 거리, c++  (0) 2024.03.06
백준 1495 기타리스트, c++  (0) 2024.03.05
백준 1743 음식물 피하기, c++  (0) 2024.03.04