https://www.acmicpc.net/problem/5883
문제
오늘은 애플의 아이폰 9S가 출시되는 날이다. N(1 ≤ N ≤ 1000)명의 사람들은 새 아이폰을 누구보다 먼저 구매하기 위해서 애플 스토어 앞에 한 줄로 서있다. 아이폰 9S는 구매자가 용량을 마음대로 정할 수 있다. 즉, 지금까지 아이폰은 16/32/64GB와 같이 용량의 크기가 미리 정해져 있었다. 하지만, 9S는 자신이 원하는 용량의 크기 B(i)를 점원에게 말하면, 정확하게 그 용량을 가진 아이폰 9S를 그 자리에서 만들어 구매하는 방식이다.
애플 스토어의 점원 상근이는 같은 용량을 원하는 사람들이 연속되어 있으면, 더 보기 좋을 것이라고 생각한다. 따라서, 특정 사람을 고르고, 그 사람이 원하는 용량을 원하는 사람을 줄에서 모두 빼버리려고 한다.
어떤 용량을 원하는 사람을 줄에서 빼 버리면, 같은 용량을 원하는 사람들이 연속되어 있는 구간의 길이중 가장 긴 값이 최대가 되는지 구하는 프로그램을 작성하시오.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int arr[1001];
int max_length = -987654321;
int main(void){
int n;
cin >> n;
for(int i = 0;i<n;i++){
cin >> arr[i];
}
//특정 사람을 고르고,
//그 사람이 원하는 용량을 원하는 사람을 줄에서 모두 뺸걸
//Person 벡터에 저장
vector<int> Person;
for(int i = 0;i<n;i++){
Person.clear();
//원하는 용량이 같은 사람 뺴고
//벡터에 삽입
for(int j = 0;j<n;j++){
if(arr[i] != arr[j]){
Person.push_back(arr[j]);
}
}
//연속되어 있는 구간의 길이중
//가장 긴 값 찾기
for(int p = 0;p<Person.size();p++){
//처음 길이 초기화
bool is_end = false;
int length = 1;
for(int q = p+1;q<Person.size();q++){
if(Person[p] != Person[q]){
is_end = true;
break;
}
length++;
}
//최대 길이 갱신
max_length = max(length,max_length);
}
}
cout << max_length;
}
'알고리즘' 카테고리의 다른 글
백준 숫자고르기 C++ (0) | 2022.12.31 |
---|---|
백준 숨바꼭질4 C++ (0) | 2022.12.27 |
백준 친구 네트워크 C++ (0) | 2022.12.21 |
백준 치킨배달 C++ (0) | 2022.12.20 |
백준 22856 트리순회 C++ (0) | 2022.12.15 |