문제링크
https://www.acmicpc.net/problem/2531
package BOJ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main_2531 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
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 arr[] = new int[N]; //초밥 저장할 배열열
boolean sushi[] ; //이 초밥 먹었는지?
for(int i=0;i<N;i++) arr[i] = Integer.parseInt(br.readLine());
int start = 0;
int end = start+1;
int res = Integer.MIN_VALUE; //가능한 다양한 종류의 초밥을 먹을 수 있는 경우의 수
while(true){
if(start == N) break;
int len = 1;
sushi = new boolean[d+1];
sushi[arr[start]] = true;
//현재 start에 대해서 얼마만큼 먹을 수 있는지 계산하기
while(true){
if(len == k){
sushi[c] = true;
int cnt = 0;
for(int i=0;i<=d;i++){
if(sushi[i]) cnt++;
}
res = Math.max(res,cnt);
start++; //start++해주고
if(start == N-1) end = 0;
else end = start+1;
break; //다음으로넘어가기
}
sushi[arr[end++]] = true;
len++;
if(end==N){
end = end-N; //다시 처음부터 시작?
}
}
}
System.out.println(res);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_2458_키순서 (0) | 2021.04.18 |
---|---|
[JAVA]백준_7662_이중 우선순위 큐 (0) | 2021.04.18 |
[JAVA]백준_2470_두용액 (0) | 2021.04.15 |
[JAVA]백준_17836_ 공주님을구해라 (0) | 2021.04.14 |
[JAVA]백준_1806_부분합 (0) | 2021.04.14 |