250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)전화번호 목록 본문
728x90
반응형
카테고리는 해시가 나와있지만, 간단하게 sort()를 활용하여 문제를 풀었다..!
우선 phone_book을 오름차순으로 정렬을 한다.
그리고 for문으로 0 ~ phone_book.size() 만큼 반복하고,
안에서는 i + 1 ~ phon_book.size() 만큼 반복한다.
1번째 for문)str은 현재 전화번호, size는 str의 크기를 나타낸다.
2번째 for문)tmp는 str을 접두어로 가지고 있는지 비교하기 위한 임시 변수로, i + 1부터 끝까지 탐색한다.
substr을 이용하여 str의 size만큼 잘라내어 tmp에 저장한다.
그리고 tmp와 str을 비교하여 서로 같으면 바로 retrun false를 해주었다..!
만약 반복문을 끝까지 돌 때까지 return하지 않고 빠져나오면 한 번호가 다른 번호의 접두어인 경우가 없으니 true를 반환한다..!
간단한 문제..!
#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(); i++)
{
string str = phone_book[i];
int size = str.size();
for(int j = i + 1; j < phone_book.size(); j++)
{
string tmp = phone_book[j].substr(0, size);
if(str == tmp)
return false;
}
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)구명보트 (0) | 2020.05.15 |
---|---|
(프로그래머스 c++)위장 (0) | 2020.05.15 |
(프로그래머스 c++)H-Index (0) | 2020.05.14 |
(프로그래머스 c++)더 맵게 (0) | 2020.05.14 |
(프로그래머스 c++)소수 찾기 (0) | 2020.05.13 |