알고리즘/프로그래머스

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

히똔 2023. 1. 15. 05:52
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
반응형