728x90
반응형
해당 문제는 전화번호부 전화번호 중 한개라도 다른 전화번호의 접두사인 경우 false를 반환하는 문제이다.
핵심 방법
string의 find함수를 이용해 같은 단어가 존재하는지 찾아낸다. find함수를 string에 사용할 경우 아래의 방식으로 동작한다.
str.find(str1)
str : 타깃 문자열
str1 : 타깃 문자열에서 찾을 문자열
반환값 : 찾았으면 str1이 등장하는 첫 index 번호, 못 찾았으면 string::npos 반환
find 함수에 대한 자세한 설명은 아래 링크에 정리해두었다.
Find 함수와 자료구조 별 시간 복잡도
find 함수는 컨테이너에서 특정 데이터를 찾아주는 함수로 해당 데이터의 iterator를 반환한다.find 함수는 컨테이너의 종류와 데이터 구조에 따라 시간 복잡도가 결정된다. Stringfind 함수는 string에
jinho082008.tistory.com
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true; // 기본적으로 true로 설정합니다.
// 전화번호부를 정렬합니다.
sort(phone_book.begin(), phone_book.end());
// 인접한 전화번호를 비교합니다.
for(int i = 0; i < phone_book.size() - 1; i++)
{
// 다음 번호가 현재 번호로 시작하는지 확인합니다.
if(phone_book[i + 1].find(phone_book[i]) == 0)
return false; // 접두사 관계가 있으면 false를 반환합니다.
}
return answer; // 접두사 관계가 없으면 true를 반환합니다.
}
728x90
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
코딩테스트 : 의상 (0) | 2025.04.16 |
---|---|
코딩테스트 : 기능개발 (1) | 2025.04.16 |
코딩테스트 : 프로세스 (0) | 2025.04.16 |
코딩테스트 : 롤케이크 자르기 (0) | 2025.04.16 |
코딩테스트 : 타겟 넘버 (0) | 2025.04.15 |