# 생각

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

+ Recent posts