본문 바로가기

Algorithm/BAEKJOON

[BOJ] 1235번 학생 번호 (C++)

728x90
반응형

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

 

1235번: 학생 번호

첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부

www.acmicpc.net

 

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main() {
	int n;
	cin >> n;
	string s[1000];
	for(int i = 0; i < n; i++){
		cin >> s[i];
	}
	int ans = s[0].size();
	for(int i = 0; i < s[0].size(); i++){
		set<string> st;
		for(int j = 0; j < n; j++){
			st.insert(s[j].substr(s[0].size() - 1 - i));
		}
		if(st.size() == n){
			ans = i + 1;
			break;
		}
	}
	cout << ans << endl;
	return 0;
}

번호가 모두 다른지 판별하는 데에 set container를 사용했다. 

길이가 1인 경우부터 번호를 잘라 set에 저장하고, set의 크기가 학생번호의 수(n)과 같다면 모든 번호가 다른 것이므로 해당 길이가 최솟값이고, 다르다면 같은 번호가 있는 것이므로 길이를 늘려서 재연산한다.

 

"모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부터 9 사이의 숫자로 이루어진 문자열이 주어진다. 문자열의 길이는 100보다 작거나 같다."

→ 학생 번호가 7으로 고정된 것 아님 주의!!

728x90
반응형