반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42577
문제 풀이
문자열 배열을 정렬하게 되면 문자열의 size로 정렬되는 것이 아니라 맨 앞의 인덱스부터 비교해나가면서 정렬을 하게 된다
예를 들어, ["119", "97674223", "1195524421"]을 정렬하게 되면 ["119", "1195524421", "97674223"] 이 된다.
따라서, 접두어를 찾기 위해 2중 for문을 사용할 필요 없이 바로 다음 인덱스의 문자열이 자신의 문자열로 시작하는지만 확인해주면 된다. 확인하는 방법은 0번째 부터 본인의 크기 만큼 substr해주면 된다.
소스 코드
#include <bits/stdc++.h>
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() - 1; i++){
if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].size())){
answer = false;
break;
}
}
return answer;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 숫자의 표현 / C++ (0) | 2022.02.17 |
---|---|
프로그래머스 - 올바른 괄호 / C++ (0) | 2022.02.16 |
프로그래머스 - 네트워크 / C++ (0) | 2022.02.15 |
프로그래머스 - 타겟 넘버 / C++ (0) | 2022.02.13 |
프로그래머스 - 카펫 / C++ (0) | 2022.02.06 |