코딩/Solve

[프로그래머스] 전화번호 목록

뎀스 2021. 2. 24. 15:42

 

#include <string>
#include <vector>

using namespace std;

bool solution(vector<string> phone_book) {
    bool answer = true;

    // 해시?
    for (int i = 0; i < phone_book.size() - 1; ++i)
    {
        for (int j = i+1; j < phone_book.size(); ++j)
        {
            if (phone_book[i].length() <= phone_book[j].length() &&
                phone_book[i]
                == phone_book[j].substr(0, phone_book[i].length()))
                return false;
            else if (phone_book[i].length() > phone_book[j].length() &&
                phone_book[i].substr(0, phone_book[j].length())
                == phone_book[j])
                return false;
            
        }
    }

    return answer;
}

해시라는 태그에 있어서 해시로 어떻게 풀지 생각하다가 일단 생각나는대로 썼다.

 

처음에는 그냥 if문만 쓰고, length && 를 넣지 않으니까 7,8번에서 실패가 떴다.

그러다가 찾아보니까 꼭 앞의 단어가 뒤와 같지 않다고 해서 무릎을 탁침..

["119", "1192839"]의 경우만 탐색하고 ["119827", "119"]를 안찾고 있었던 것

 

그래서 추가하니까 통과했다.

 

프로그래머스의 좋은점이, 다 풀면 다른분의 풀이가 해금된다는건데

역시 카테고리가 해쉬인지라 보니까 신기한 풀이가..