백준/구현

[백준 5052번 / C++] 전화번호 목록

배발자 2022. 3. 2.
반응형

#접근방법 

  1. 문자열을 담고 있는 벡터를 sort  해준다. 
  2. 접두어는 현재 벡터 문자열 이전의 문자열이기 때문에  "v[i].find(v[i - 1])" 의 코드를 통해 체크해준다. 
  3. 만약 0이라면 접두어라는 의미이며 0이 아니라면 접두어가 아니라는 뜻이다. 

* 0의 의미는 해당 문자열을 찾았을 때 시작 인덱스 번호를 뜻함. 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std; 
int main() {
	int n; cin >> n; 
	while (n--) {
		int number; cin >> number; 		
		string result = "YES"; 
		vector <string> vs; 
		for (int i = 0; i < number; i++) {
			string s; cin >> s; 
			vs.push_back(s); 
		}
		sort(vs.begin(), vs.end()); 	
		for (int i = 1; i < number; i++) {			
			if (vs[i].find(vs[i - 1]) == 0) { 
				result = "NO"; 
				break; 
			}
		}
		cout << result << "\n"; 
	}
}

https://www.acmicpc.net/problem/5052

 

반응형

댓글