๋ฌธ์
https://www.acmicpc.net/problem/15961
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n, d, k, c; // ์ ์ ์, ์ด๋ฐฅ ์ข
๋ฅ, ์ฐ์ํด์ ๋จน๋ ์ ์ ์, ์ฟ ํฐ
static int susi[], ate[]; // ๋ฒจํธ์ ๋์ธ ์ด๋ฐฅ ์ข
๋ฅ, ์ด๋ฐฅ ๋ณ ๋จน์ ๊ฐ์
static int cnt, ans;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
d = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
susi = new int[n];
ate = new int[d+1];
for(int i = 0; i < n; i++) {
susi[i] = Integer.parseInt(in.readLine());
}
eat();
System.out.println(ans);
}
public static void eat() { // ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
for(int i = 0; i < k; i++) {
if(ate[susi[i]] == 0) ans++;
ate[susi[i]]++;
}
cnt = ans;
ans = (ate[c] > 0) ? cnt : cnt + 1;
int start = k;
while(start != n-1+k) {
if(--ate[susi[(start - k) % n]] == 0) cnt--;
if(ate[susi[start % n]]++ == 0) cnt++;
ans = Math.max(ans, (ate[c] > 0) ? cnt : cnt + 1);
start++;
}
}
}
๐ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฌธ์
๊ฐ์ฅ ๋จผ์ ์ฒซ ๋ฒ์งธ ์ ์๋ถํฐ k๊ฐ์ ์ ์๋ฅผ ๋จน์ด์ฃผ์๋ค. ๋จน์ ์ด๋ฐฅ์ ate ๋ฐฐ์ด์ ํ์ํ๊ณ ,
๋ง์ฝ ํด๋นํ๋ ์ ์์ ์ด๋ฐฅ์ด ์ฒ์ ๋จน๋ ์ด๋ฐฅ์ผ ๊ฒฝ์ฐ์๋ ans ๋ณ์๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ์๋ค.
cnt ๋ณ์์ ans ๊ฐ์ ๋ด์๋๊ณ , ์ฟ ํฐ์ ํด๋นํ๋ ์ด๋ฐฅ์ ๋จน์๋ค๋ฉด ans๋ฅผ ๊ทธ๋๋ก ๋๋์๊ณ
์ฟ ํฐ์ ํด๋นํ๋ ์ด๋ฐฅ์ ๋จน์ง ์์๋ค๋ฉด ans๋ฅผ 1 ์ฆ๊ฐ์์ผฐ๋ค. (๋ ๋ง์ ์ข ๋ฅ์ ์ด๋ฐฅ ๋จน์ ์ ์์)
๋ ๋ฒ์งธ ํ์๋ถํฐ๋ while์ ์ฌ์ฉํ์ฌ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฐฉ์์ ์ ์ฉํ๋ค.
(start - k) % n ์ฐ์ฐ์ ํตํด์ ํ ์นธ์ฉ ๋ค๋ก ๋น๊ธฐ๋ฉฐ ํ์ํ ์ ์๋๋ก ํ์๋ค.
๋ ๊ฐ์ if ์กฐ๊ฑด๋ฌธ์ ํ์ธํด๋ณด๋ฉด,
๋จน์ ์ด๋ฐฅ ์ค ์ฒซ ๋ฒ์งธ ์ด๋ฐฅ์ ๋ฒ๋ฆฌ๋๋ฐ, ๊ทธ ์ด๋ฐฅ์ด ๋ ์ด์ ๋จน์ง ์์ ์ด๋ฐฅ์ด ๋ ๊ฒฝ์ฐ cnt๋ฅผ ๊ฐ์,
์ด๋ฐฅ ํ๋๋ฅผ ์๋ก ๋จน๋๋ฐ ๊ทธ ์ด๋ฐฅ์ด ๋จน์์ ์๋ ์ด๋ฐฅ์ผ ๊ฒฝ์ฐ์๋ cnt๋ฅผ ์ฆ๊ฐ์์ผฐ๋ค.
๋ง์ง๋ง์ผ๋ก ans๋ฅผ Max ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ์์ผ์ฃผ์๊ณ ,
start๋ฅผ ์ฆ๊ฐ์์ผ์ ๊ทธ ๋ค์ ์ด๋ฐฅ์ ๋จน์ ์ ์๋๋ก ํด์ฃผ์์ผ๋ฉฐ,
๋ง์ฝ ๋ชจ๋ ์ด๋ฐฅ ํ์์ ์๋ฃํ๋ค๋ฉด while๋ฌธ์ ํ์ถํ ์ ์๊ฒ ํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฌธ์ ๋ฅผ ๋ง์ด ์ํ์ด๋ณด๊ธฐ๋ ํ๊ณ , ์ ๋ง ์ค๋๋ง์ ํ์ด๋ด์ ๋ฐ๋ก ๋ ์ค๋ฅด์ง ์์์ง๋ง
๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๊ฐ๋ ์ ์๋๊ธฐ ๋๋ฌธ์ ๋น์ทํ ๋ฌธ์ ๋ค์ ๋ช ๋ฒ ๋ ํ์ด๋ณด๋ฉด ๋ ์ต์ํ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] A์ B #12904 (0) | 2023.03.05 |
---|---|
[Java Algorithm] ์ค๋์ฟ BOJ #2239 (0) | 2022.10.04 |
[Java Algorithm] ๋ฒฝ๋ ๊นจ๊ธฐ SWEA #5656 (1) | 2022.10.04 |
[Java Algorithm] RGB ๊ฑฐ๋ฆฌ 2 BOJ #17404 (0) | 2022.10.02 |
[Java Algorithm] ํ์ดํ ์ฎ๊ธฐ๊ธฐ 2 BOJ #17069 (0) | 2022.09.30 |
๋๊ธ