Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

hwooo

BOJ (C/C++) 1235번: 학생 번호 본문

Study/Algorithm

BOJ (C/C++) 1235번: 학생 번호

hwooo 2022. 12. 28. 17:27

풀이

학생 번호는 최대 100자리이므로 문자열 사용.

문자열에서 뒤의 k자리만 추려서 set에 저장한 다음 set의 크기와 학생의 수가 같다면 모든 학생들의 번호가 다른 것이므로 k출력.


코드

#include <stdio.h>
#include <iostream>
#include <set>
#include <vector>
#include <string>
using namespace std;

set <string> S;
vector <string> V;

void Get_K(int N, int len) {
	int k = 1;

	while (1) {

		// 뒤에서 k자리 수 뽑아내서 set에 저장
		for (int i = 0; i < N; i++) S.insert(V[i].substr(len - k, len));
		
		// 겹치는 숫자가 없다면 답
		if (S.size() == N) {
			printf("%d", k);
			return;
		}

		S.clear();
		k++;
	}
}

int main() {
	int N, n;
	string S;
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		cin >> S;
		V.push_back(S);
	}

	Get_K(N, V[0].length());

	return 0;
}