[프로그래머스 문제풀이] 3. 전화번호 목록

WIGWAG·2023년 1월 1일
0

프로그래머스

목록 보기
3/32

각 단어들의 앞부분을 확인해서 단어가 같은 지 확인한다.

다음 문자열을 자르는 함수이다.

substr(start, end); //스트링의 구간추출

그 전에 인접 인덱스만 확인할 수 있도록 하기 위해
컨테이너를 정렬해서 앞부분 숫자가 같은 단어끼리 붙게 만든다.

배열의 원소들을 순차적으로 돌면서 해당 원소의 다음 원소를 확인해야 하기 때문에
인덱스는 0부터 마지막 원소 전까지 체크한다.

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

using namespace std;

bool solution(vector<string> phone_book) {
    sort(phone_book.begin(), phone_book.end());

    auto i = adjacent_find(phone_book.begin(), phone_book.end(), [](string a, string b) {
        return a == b.substr(0, a.size());
        });

    return i == phone_book.end();
}

int main()
{
    cout << solution({ "119", "97674223", "1195524421" }) << '\n';
    cout << solution({ "123","456","789" }) << '\n';
    cout << solution({ "12","123","1235","567","88" }) << '\n';
}

실행결과

false
true
false


전화번호 목록 문제 링크

profile
윅왁의 프로그래밍 개발노트

0개의 댓글