응애개발자
article thumbnail
728x90

문제

 

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

 


 

접근방법

1.  N이 1000이기 때문에 이중포문을 돌아도 충분히 가능하다고 생각했습니다. O(N^2)

2. 값을 받을때 후보를 set에 넣어서 set이 포함된 숫자는 건너 뛰어서 가장 긴 연속된 값을 찾으려고 생각했습니다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int N;
    private static int[] arr;
    private static TreeSet<Integer> set = new TreeSet<Integer>();
    private static int answer = 0 ;


    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Integer.parseInt(br.readLine());

        arr = new int[N];
        for(int i = 0 ; i < N ; i++){
            arr[i] = Integer.parseInt(br.readLine());
            set.add(arr[i]);
        }
    }

    //실행
    public static void process() {
        for(int i : set){
            int count = 0;
            int temp = -1;

            for(int j = 0 ; j < N ; j++){
                //용량이 같으면 건너뛰기
                if(arr[j] == i) continue;
                
                //이전값과 동일하지 않으면 초기화
                if(arr[j] != temp){
                    answer = Math.max(answer, count);
                    temp = arr[j];
                    count = 1;
                    
                //이전과 동일하면 카운트 증가                    
                }else{
                    count++;
                }
            }
            answer = Math.max(answer,count);
        }
        System.out.println(answer);
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!