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

조항주·2022년 4월 19일
0

algorithm

목록 보기
29/50
post-thumbnail

문제

https://programmers.co.kr/learn/courses/30/lessons/42577

코드

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

bool solution(vector<string> phoneBook) {
    bool answer = true;

    sort(phoneBook.begin(), phoneBook.end());

    for ( int i = 0 ; i < phoneBook.size() - 1 ; i++ )
    {
        if ( phoneBook[i] == phoneBook[i+1].substr(0, phoneBook[i].size()) )
        {
            answer = false;
            break;
        }
    }

    return answer;
}

풀이

저는 이 문제를 해시테이블로 풀지 않았습니다 전화번호가 다른 전화번호의 접두사가 되는 경우가 있는지를 확인 하는 문제인데 먼저 전화번호 목록을 정렬을 합니다

["119", "97674223", "1195524421"] //정렬 전
["119", "1195524421", "97674223"] //정렬 후
오름차순으로 정렬이 되는데 숫자가 같다면 길이가 작은 순으로 정렬이 됩니다.

그렇기 때문에 정렬 후에 전화번호 목록을 순차적으로 돌면서 다음전화번호와 겹치는지를 확인하면 됩니다.

0개의 댓글