1일1알

백준 1235번 학생 번호 C++ 본문

알고리즘

백준 1235번 학생 번호 C++

영춘권의달인 2022. 4. 16. 11:20

출처 : https://www.acmicpc.net/problem/1235

 

뒤에서부터 substr를 이용해서 부분 문자열을 추출하면서 set에 넣어서 넣은 만큼 있으면 모두 다른 것이므로 그때가 서로 다른 최소의 길이이다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>

using namespace std;
using ll = long long;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	cin >> n;
	vector<string> v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	int idx = v[0].length() - 1;
	int ans = 0;
	int cnt = 1;
	for (int i = idx; i >= 0; i--) {
		set<string> s;
		for (int j = 0; j < n; j++) {
			s.insert(v[j].substr(i, cnt));
		}
		if (s.size() != n) {
			cnt++;
			continue;
		}
		ans = idx - i + 1;
		break;
	}
	cout << ans;
};