# 생각
map 컨테이너를 사용하면 쉽게 관리할 수 있다
입력받은 전화번호는 1로 저장해주고,
새로운 tmp string 배열을 통해 각 string 길이의 -1까지 체크를 해주면
접두사가 있는지 아닌지 걸러낼 수 있다
for (int j = 0; j < phone_book[i].length() - 1; j++)
{
tmp += phone_book[i][j];
if (m[tmp]) answer = false;
}
또는, 전체 길이를 체크해주고 같은 배열이 아니어야 하므로 조건을 추가해줘도 된다
for (int j = 0; j < phone_book[i].length(); j++)
{
tmp += phone_book[i][j];
if (m[tmp] and tmp != phone_book[i]) answer = false;
}
# 전체 코드
#include <bits/stdc++.h>
using namespace std;
bool solution(vector<string> phone_book) {
bool answer = true;
map<string, int> m;
for (int i = 0; i < phone_book.size(); i++) m[phone_book[i]] = 1;
for (int i = 0; i < phone_book.size(); i++)
{
string tmp = "";
for (int j = 0; j < phone_book[i].length() - 1; j++)
{
tmp += phone_book[i][j];
if (m[tmp]) answer = false;
}
}
return answer;
}
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv.3] 베스트앨범 with cpp (0) | 2022.03.01 |
---|---|
[Lv.2] 위장 with cpp (0) | 2022.03.01 |
[Lv.1] 완주하지 못한 선수 with cpp (0) | 2022.02.28 |
[Lv.1] 크레인 인형뽑기 게임 with cpp (0) | 2022.02.20 |
[Lv.1] 키패드 누르기 with cpp (0) | 2022.02.20 |