반응형
https://www.acmicpc.net/problem/1235
1235번: 학생 번호
첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부
www.acmicpc.net
모든 경우의 수를 탐색하는 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
n, 학생번호 길이 length, ans, 학생 번호를 저장할 vector변수 students, map변수 m을 선언합니다.
📔 풀이과정
0 ~ length - 1까지 loop를 수행합니다.1. 그 안에서 n개의 학생 list를 확인하면서 뒤에 k만큼만 남긴뒤 map에 추린 학생번호를 key, key의 빈도 수를 value로 두어서 저장해줍니다.2. 저장완료 후 map의 원소를 확인하면서 빈도수가 1초과인지 확인하는 함수 isDuplicated를 수행해서 중복여부를 검사합니다.3. 중복이 없다면 그 길이의 최솟값을 ans에 저장합니다.
📔 정답출력
ans를 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, length, ans;
vector <string> students;
map <string, int> m;
bool isDuplicated(){
for(auto el : m)
if(el.second > 1)
return true;
return false;
}
int main(){
cin >> n;
students.resize(n);
for(int i = 0; i < n; i++) cin >> students[i];
length = students[0].size();
ans = length;
for(int k = 0; k < length; k++){
m.clear();
for(int i = 0; i < n; i++) m[students[i].substr(k)]++;
if(!isDuplicated()) ans = min(ans, length - k);
}
cout << ans;
}
'Algorithm > Brute Force' 카테고리의 다른 글
(C++) - 백준(BOJ) 6030 : Scavenger Hunt (0) | 2022.05.27 |
---|---|
(C++) - 백준(BOJ) 4108 : 지뢰찾기 (0) | 2022.05.26 |
(C++) - 백준(BOJ) 18511 : 큰 수 구성하기 (2) | 2022.05.10 |
(C++) - 백준(BOJ) 19947 : 투자의 귀재 배주형 (0) | 2022.05.06 |
(C++) - 백준(BOJ) 2246 : 콘도 선정 (0) | 2022.05.02 |