
문제 설명
전화번호를 담은 배열이 있을 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false, 아니면 true를 return
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이법
전화번호가 들어있는 vector를 sort하면 인접한 번호끼리 정렬이 될 것이므로, sort를 한 뒤에 string의 find()를 통해 찾으면 편하고 빠르게 찾아낼 수 있다
for문을 돌면서 해당 문자열이 앞 인덱스의 문자열의 접두어인지 find()를 통해 확인한다
만일 find()를 한 값이 0이면 접두어이므로 바로 false를 return 한다
소스 코드
#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 = 1; i < phone_book.size(); i++) {
if (phone_book[i].find(phone_book[i - 1]) == 0)
return false;
}
return answer;
}
'Algorithm Study' 카테고리의 다른 글
[프로그래머스] 2단계 - 피로도 (0) | 2024.02.06 |
---|---|
[프로그래머스] 2단계 - 기능개발 (0) | 2024.02.06 |
[프로그래머스] 2단계 - 타켓 넘버 (0) | 2024.02.03 |
[프로그래머스] 2단계 - 튜플 (0) | 2024.02.03 |
[프로그래머스] 2단계 - 의상 (0) | 2024.02.03 |