티스토리 뷰

사용언어) C++

 

문제)

전화번호부에 적힌 전화번호를 담은 배열 phone_book이 solution함수의 매개 변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 

 

풀이)

  문제 내용 자체는 풀만 했었지만, 내가 sort의 원리를 잘못 이해하고 있어서 한 시간 정도 노가다를 하고 있었다.. 여기서 오해한 부분은 sort가 길이별로 정렬될 줄 알았는데, 크기 순으로 정렬이 되어서 문제가 풀리지 않았다. 풀이는 sort로 정렬해서 뒤의 크기를 앞 문자열 크기만큼 잘라서 비교해서 넘어가면 된다.

 

사용 코드)

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;
bool solution(vector<string> phone_book) { 
    sort(phone_book.begin(), phone_book.end());
    for(int i = 0;i<phone_book.size()-1;i++){
        string s = phone_book[i];
        string n = phone_book[i+1].substr(0,phone_book[i].size());
        if(s == n)
            return false;
    }
    return true;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함