https://programmers.co.kr/learn/courses/30/lessons/42577
정렬시킨 후에 현재 전화번호와 다음 전화번호를 비교해주면 된다.
문자열로 된 숫자이기 때문에 숫자 크기가 아니라 사전 순으로 정렬되므로 앞부분이 같다면 벡터에서 옆에 위치하게 될 것이다.
현재 전화번호가 다음 전화번호의 접두어인지를 확인해주면 되는데
다음 전화번호를 현재 전화번호 길이만큼 잘라서 같은 문자열이 되는지 확인해보고 같아지는 경우가 있다면 바로 false를 리턴한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#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());
int size = phone_book.size();
for(int i=0; i<size-1; i++) {
if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].size())) {
return false;
}
}
return answer;
}
Colored by Color Scripter
|
'프로그래머스' 카테고리의 다른 글
프로그래머스 (2018년)KAKAO BLIND RECRUITMENT 오픈채팅방 c++ (0) | 2019.08.22 |
---|---|
프로그래머스 탑 (c++) (0) | 2019.08.20 |
프로그래머스 프린터 (c++) (0) | 2019.08.20 |
프로그래머스 위장 (0) | 2019.08.19 |
프로그래머스 완주하지 못한 선수 (1) | 2019.08.19 |