728x90
반응형
풀이 문제 : 프로그래머스 코딩테스트 고득점 Kit - 해시 level2 : 전화번호 목록
풀이 언어 : C++
알고리즘 : 정렬
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42577
문제요약
전화번호가 주어지는데, 하나의 전화번호가 다른 하나의 접두어가 된다면 false를 리턴하게 해야한다.
접근 방식
2중 for문을 이용해 확인할수도 있겠지만, 주어진 전화번호 배열을 정렬 후, for문 한개 앞뒤 번호를 비교하는 것이 효율적이다.
코드
#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());
int len = phone_book.size();
for(int i=1;i<len;i++){
int front_size = phone_book[i-1].size();
if(front_size < phone_book[i].size()){
bool right = true;
for(int j=1;j<front_size;j++){
if(phone_book[i-1][j] != phone_book[i][j]) {
right = false;
break;
}
}
if(right == true) {
answer = false;
break;
}
}
}
return answer;
}
회고
정렬을 잘 이용하기
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 : C++ (0) | 2023.01.14 |
---|---|
[프로그래머스] 폰켓몬 : C++ / set (0) | 2023.01.13 |
[프로그래머스] 구명보트 / C++ (0) | 2022.04.20 |