728x90
반응형
풀이 문제 : 프로그래머스 코딩테스트 고득점 Kit - 해시 level2 : 전화번호 목록
풀이 언어 : C++
알고리즘 : 정렬
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제요약
전화번호가 주어지는데, 하나의 전화번호가 다른 하나의 접두어가 된다면 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 |