• 해시 알고리즘 문제 : 프로그래머스 LEVEL 2(전화번호 목록) image - 사용 언어 : 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;
    }
    ```