๋ฐ์ํ
๋ฌธ์ (Silver 1)
https://www.acmicpc.net/problem/2531
ํ์ด
๊ธธ์ด๊ฐ k์ธ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ก ๊ตฌํํ์๋ค.
์ด ๋, ๋งค๋ฒ i๋ฒ์งธ์ ๋ํด์ k๊ฐ๋ฅผ ํ์ํ๋ ๊ฒ์ด ์๋๋ผ ( → ์๊ฐ์ด๊ณผ! )
์ด๊ธฐ์ window๋ฅผ ์ ํ ํ๊ณ start์ end ์ธ๋ฑ์ค์ ๋ํด์๋ง ์ฒ๋ฆฌํ์๋ค.
์ฌ๋ผ์ด๋ฉ ํ ๋,
eat[start] ๊ฐ์ -1ํ๊ณ , ๊ทธ ๊ฐ์ด 0์ด๋ผ๋ฉด cnt๋ฅผ ํ๋ ๊ฐ์์ํจ๋ค.
→ ์๋์ฐ ์์ ํด๋น ์ข ๋ฅ์ ์ด๋ฐฅ์ ๋จน๋ ์ผ์ด ์์ผ๋ฏ๋ก
eat[end] ๊ฐ์ +1ํ๊ณ , ๊ทธ ๊ฐ์ด 1์ด๋ผ๋ฉด(= ์๋ ์ฝ๋์์๋ +1 ํ๊ธฐ์ ์ 0์ธ๊ฐ๋ฅผ ํ๋จ) cnt๋ฅผ ํ๋ ์ฆ๊ฐ์ํจ๋ค.
→ ์ด์ ์ ์๋ ์ข ๋ฅ์ ์ด๋ฐฅ์ ๋จน๋ ๊ฒ์ด๋ฏ๋ก
์ฝ๋
๋๋ณด๊ธฐ
package implement;
import java.io.*;
import java.util.*;
public class BOJ_2531_ํ์ ์ด๋ฐฅ {
static int N, d, k, c;
static int[] sushi;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
d = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken())-1;
sushi = new int[N];
int[] eat = new int[d]; // ํด๋น ์ข
๋ฅ์ ์ด๋ฐฅ์ ๋ช๊ฐ ๋จน์๋์ง ์ ์ฅํ๋ ๋ฐฐ์ด
for(int i =0 ; i < N ; i++){
sushi[i] = Integer.parseInt(br.readLine())-1;
}
int res = 0;
int cnt = 0;
for(int i =0 ; i < k ; i++){
if(eat[sushi[i]]++ == 0) cnt++;
}
for(int i =0 ; i < N ; i++){
if(res <= cnt){ // MAX ๊ฐ ์๋ก ๊ฐฑ์
if(eat[c] == 0) res = cnt+1;
else res = cnt;
}
int j = (i+k)%N; // end ๊ฐ (์ํ → ์ธ๋ฑ์ค ์ด๊ณผํ ๋์ ์ฒ๋ฆฌ)
if(eat[sushi[j]] ++ == 0) cnt++;
if(-- eat[sushi[i]] == 0) cnt--;
}
System.out.println(res);
}
}
์ ์ถ
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Implementation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1253๋ฒ: ์ข๋ค (Java) (0) | 2022.04.13 |
---|---|
[๋ฐฑ์ค] 16639๋ฒ: ๊ดํธ ์ถ๊ฐํ๊ธฐ 3 (0) | 2022.03.29 |
[๋ฐฑ์ค]11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 9996๋ฒ: ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 18222๋ฒ ํฌ์-๋ชจ์ค ๋ฌธ์์ด ( Java ) (0) | 2022.02.16 |