-
해시 알고리즘 문제 : 프로그래머스 LEVEL 2(전화번호 목록)
- 사용 언어 : C++ - 해결 날짜 : 2021-02-02**- 해결 방법** : 처음에는 효율성을 생각하지 않고 이중 for문으로 문제를 해결했는데, test case가 증가하면 효율성 통과에 실패할 것 같아서 수정했다. 오름차순으로 먼저 정렬한 다음 정렬된 phone_book vector에서, 현재 인덱스와 다음 인덱스끼리만 비교하면 되므로 시간 복잡도를 감소시킬 수 있었다. 현재 인덱스의 값과 다음 인덱스에서 현재 인덱스의 길이만큼 자른 값을 비교하여 같다면 접두사가 존재하는 것이므로 false를 반환하였다. - 코드 ``` #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()-1; i++){ if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].size())){ answer = false; break; } } return answer; } ```