하루하루 꾸준히, 인생은 되는대로

알고리즘

백준 5883 C++

긤효중 2022. 12. 22. 01:43

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

 

5883번: 아이폰 9S

사람 9명이 줄을 서있고 각 사람이 원하는 용량의 크기는 2, 7, 3, 7, 7, 3, 7, 5, 7 이다. 용량 3을 원하는 사람을 줄에서 빼버리면, 줄은 2, 7, 7, 7, 7, 5, 7가 되고, 7을 원하는 사람이 4명이 연속된 구간이

www.acmicpc.net


문제

오늘은 애플의 아이폰 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