문제
리뷰
해시 카테고리에 있는 문제다.
입력이 [12,123,1235,567,88] 로 주어졌을 때, 12 가 123의 접두어가 된다. 그래서 답이 false가 나와야 한다.
따라서 12를 타겟으로 두고, 나머지 문자열을 검사한다.
나머지 문자열이 12를 가지고 있는 시작 인덱스가 0인지 확인하면 된다.
// 12 : first, 123 : second 문자열인 경우,
int loc = second.find(first);
if(loc == 0 ) answer = false; break;
코드
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
int pb_size = phone_book.size();
sort(phone_book.begin(), phone_book.end());
for(int i = 0; i < pb_size; i++){
for(int j = i+1; j < pb_size; j++){
string first = phone_book[i];
string second = phone_book[j];
int loc = second.find(first);
if(loc == 0 ) answer = false; break;
}
}
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 기능개발 c++ (0) | 2020.11.02 |
---|---|
[프로그래머스] 더 맵게 c++ (0) | 2020.11.01 |
[프로그래머스] 주식가격 c++ 2가지 풀이 (0) | 2020.10.31 |
[프로그래머스] 콜라츠 추측 c++ (0) | 2020.08.16 |
[프로그래머스] 하샤드 수 c++ (0) | 2020.07.22 |