[실력진단 테스트]
[문제]
https://www.codetree.ai/training-field/search/problems/continuous-number?&utm_source=clipboard&utm_medium=text
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
[문제 풀이]
완전탐색을 이용해서 임의의 숫자 k를 선택했을 때 해당 숫자를 제거하고 봤을때 연속으로 나오는 숫자의 최대 길이를 구하는 문제이다.
해당 문제에서 주의할점은 모두 같은 숫자를 주어질 경우 0이 나온다는 것이다.
그러니 만일 모든 숫자가 같다면 0이 나오게 세팅을 하고 시작하자.
bool flag = true;
for(int i = 1;i<n;i++){
if(arr[i] != arr[i - 1]){
flag = false;
}
}
if(flag == true){
cout<<-1<<endl;
return 0;
}
해당 부분을 넘어서서는 이제 이중 반복문을 이용해서 풀어주도록 하자. 코드를 보면 쉽게 이해가 갈 것이다.
[회고]
.
[코드]
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int n;
cin>>n;
vector<int> arr(n);
for(int i = 0;i<n;i++){
cin>>arr[i];
}
bool flag = true;
for(int i = 1;i<n;i++){
if(arr[i] != arr[i - 1]){
flag = false;
}
}
if(flag == true){
cout<<-1<<endl;
return 0;
}
int answer = 0;
for(int i = 0;i<n;i++){
int exNum = -1;
int total = 1;
for(int j = 0;j<n;j++){
if(arr[j] == arr[i]){
continue;
}
if(exNum == arr[j]){
total += 1;
}
else{
answer = max(answer,total);
total = 1;
}
exNum = arr[j];
}
answer = max(answer, total);
}
cout<<answer<<endl;
return 0;
}