https://school.programmers.co.kr/learn/courses/30/lessons/42577#
맵에 같은 번호가 있으면 false반환하게 하면 된다.
이때 짧은 번호가 나중에 나올 수 있으니 문자열 길이로 sort 한 후 비교
#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>
#include <algorithm>
using namespace std;
bool bigger(string a, string b){
if(a.length()<b.length())
return true;
else
return false;
}
bool solution(vector<string> phone_book) {
unordered_map<string,int> m;
sort(phone_book.begin(),phone_book.end(),bigger);
int minLen = 21;
for(int i = 0;i<phone_book.size();i++){
string number = phone_book[i];
int numberLen = number.length();
minLen = min(minLen, numberLen);
if(m.empty())
m[number] = 1;
else{
string temp = string(number.begin(),number.begin()+minLen);
for(int j = minLen;j<number.length();j++){
if(m[temp] == 1)
return false;
temp += number[j];
}
m[number] = 1;
}
}
return true;
}
'Programmers Review' 카테고리의 다른 글
[Lv 2] 스킬트리 (0) | 2024.08.05 |
---|---|
[Lv 2] 튜플 (0) | 2024.08.02 |
[Lv 2] [1차] 뉴스클러스팅 (0) | 2024.08.02 |
[Lv 2] 피로도 (0) | 2024.08.02 |
[Lv 2] [1차] 캐시 (0) | 2024.07.10 |