알고리즘 문제/C++

[프로그래머스] Level2 : 전화번호 목록 - C++

lingk 2021. 1. 23. 14:45

문제

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

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr


코드

#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();i++){
        for(int j=i+1;j<phone_book.size();j++){
            if(phone_book[j].find(phone_book[i])==0){
                answer = false;
                return answer;
            }
        }
    }
    return answer;
}

우선 sort함수를 통해서 벡터를 길이순으로 정렬을 해주었다. find() 함수로 짧은 문자열을 긴 문자열에서 찾는데, 이때 반환값이 0이면 한 번호가 다른 번호의 접두어인 경우이다. 

반응형