https://www.acmicpc.net/problem/2531
나의풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); //접시수
int d = Integer.parseInt(st.nextToken()); //초밥 가지수
int k = Integer.parseInt(st.nextToken()); //연속해서 먹을 수
int c = Integer.parseInt(st.nextToken()); //쿠폰번호
int[] eating = new int[d+1]; //먹은 초밥 종류 관련 배열
eating[c] = 1; //무료 초밥 먹은걸로 초기화.
int count = 1; //무료 초밥이 1개 있으므로 default Value = 1
int[] sushi = new int[N];
for(int i=0;i<N;i++)
sushi[i] = Integer.parseInt(br.readLine());
//첫번째 슬라이드
for(int i=0;i<k;i++){
int sushiId = sushi[i];
if(eating[sushiId]==0)//안먹었으면
count++;
eating[sushiId]++;
}
int max = count;
for(int i=0;i<N-1;i++){
int s_id = sushi[i]; //start
int e_id = sushi[(i+k) % N];//end
eating[s_id]--;
if(eating[s_id]==0)
count--;
if(eating[e_id]==0)
count++;
eating[e_id]++;
max = Math.max(max, count); //최대값 비교
}
bw.write(String.valueOf(max));
bw.flush();
bw.close();
br.close();
}
}
'코테풀이' 카테고리의 다른 글
[백준] BOJ - 14940 쉬운 최단거리 자바 java (실버1) (0) | 2023.03.10 |
---|---|
[백준] BOJ - 19637 IF문 좀 대신 써줘 자바 java (실버 3) (2) | 2023.03.08 |
[백준] BOJ - 15989 1, 2, 3 더하기 4 자바 java (실버1) (0) | 2023.03.02 |
[백준] BOJ - 20310 타노스 자바 java (실버3) (0) | 2023.02.28 |
[프로그래머스] 프로그래머스 미로 탈출 java 자바 (level2) (0) | 2023.02.23 |