프로그래머스/lv2/42577. 전화번호 목록

SITY·2023년 10월 7일
0

Cpp_Algorithm

목록 보기
24/43

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

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

배열을 Lexicographic order로 정렬하게 된다면, 굳이 해시를 사용하지 않아도 이 문제를 해결할 수 있다. 사전식 순으로 정렬한다면 바로 옆끼리 비교를 해서 접두사가 있는 지 알 수 있기 때문에 sort로 정렬을 하면 길이가 짧은 순으로 오름차순 정렬이 된다. 그러면 왼쪽에 있는 v[ i ]와 v[ i + 1 ]을 비교하여 오른쪽에 있는 문자열이 왼쪽에 있는 문자열을 포함하는지 확인만 하면 쉽게 해결할 수 있다.

profile
·ᴗ·

0개의 댓글