https://programmers.co.kr/learn/courses/30/lessons/42577
아래 블로그를 보고 참고를 조금 했다.
String을 사용한다는 점을 활용해서 sort하는거에서 감탄했다
문자열 비교 로직
1. 동일한 위치(인덱스)의 문자와 비교했을 때 다를 경우, ASCII 코드 값을 기준으로 비교(ex. 'A' < 'B')
2. 서로 길이가 다를 경우, 앞에서 부터 시작해서 같은 부분이 있는 경우 길이가 짧은 순(ex. "12" < "123")
이 로직이 사용되기 때문에 바로 이전 string과 비교만 하면 되게 된다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> phone_book)
{
// 예외 처리
if(phone_book.size() <= 1)
return true;
sort(phone_book.begin(), phone_book.end());
// 이전 전화번호의 접두어일 경우 false!
for(int i = 1; i < phone_book.size(); i++)
{
if(phone_book[i].find( phone_book[i - 1]) == 0)
return false;
}
return true;
}
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 조이스틱 c++ (1) | 2021.06.20 |
---|---|
프로그래머스 : 위장 C++ (0) | 2021.06.19 |
프로그래머스 : 이중우선순위 큐 C++ (0) | 2020.11.19 |
프로그래머스 : 거스름돈 C++ (DP 사용) (0) | 2020.11.18 |
프로그래머스 : 기지국 설치 C++ (0) | 2020.11.03 |