코딩 테스트/프로그래머스

프로그래머스 해시 전화번호목록

상어악어 2022. 3. 12. 16:46
반응형
#include <string>
#include <vector>
#include <algorithm>



using namespace std;



bool solution(vector<string> phone_book) {
    bool answer = true;
    sort(phone_book.begin(), phone_book.end());
    
    for(int i=0; i<phone_book.size()-1; i++) {
        if(phone_book[i]==phone_book[i+1].substr(0,phone_book[i].size()))
        {
            answer=false;
            break;
        }
        
    }
    
    return answer;
    
}

처음에는 vector<int> 를 따로만들어서

정렬하고 다시 phone_book에 넣고

substr으로 접두사비교를하는식으로했는데

틀렸다고 나와서

 

다른사람풀이를보니

그냥 바로 vector<string>에서 정렬하고 비교하더라

 

 

그리고 이 문제를 풀면서

vector<string> phone_book의

phone_book[0]의 길이, phone_book[1]의 길이를 어떻게 구할지 몰랐었다

phone_book[0].length()를하면 오류가나는데 왜이러는지 잘 모르겠다

iterator로 (*it).length()를 하면 되긴하는데

그러면 이중반복문에서 core dumped가 뜬다

 

방법은

그냥

해당 index에 size를하면된다

phone_book[0].size()

이건 몰랐던건데 알아간다

반응형