20922번: 겹치는 건 싫어
홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열
www.acmicpc.net
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
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 K = Integer.parseInt(st.nextToken());
int[] A = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
int maxLength = 1;
int left = 0;
int right = 0;
Map<Integer, Integer> map = new HashMap<>();
while (right < N) {
if (map.getOrDefault(A[right], 0) + 1 <= K) {
map.put(A[right], map.getOrDefault(A[right], 0) + 1);
maxLength = Math.max(maxLength, right - left + 1);
right++;
} else {
map.put(A[left], map.get(A[left]) - 1);
left++;
}
}
System.out.println(maxLength);
}
}
728x90
'알고리즘 > 투포인터' 카테고리의 다른 글
[백준][JAVA] 7453번 합이 0인 네 정수 (0) | 2024.03.10 |
---|---|
[백준][JAVA] 2230번 수 고르기 (0) | 2024.02.21 |
[백준][JAVA] 2531번 회전 초밥 (0) | 2024.01.09 |
[백준][JAVA] 1940번 주몽 (0) | 2024.01.05 |