일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 브루투포스
- 연관관계
- 1일1솔
- 프로그래머스
- BFS
- popleft
- c#
- JPA
- 소수판별
- 백준
- pypy3
- DP
- 소수찾기
- 우선순위큐
- 인프런
- 완전탐색
- 그리디 알고리즘
- python3
- spring
- LCM
- 합 구하기
- unity
- C#강의
- deque
- Java
- 파이썬
- 누적합
- mvc
- appendleft
- Python
Archives
- Today
- Total
jae_coding
(백준 알고리즘 문제풀이) 20922번 겹치는 건 싫어 본문
반응형
문제
문제 접근
- a에 들어갈 수 있는 범위 (1 <= a <= 100,000)이기때문에 count를 100,001개의 리스트 생성
- a리스트에 들어가 있는 수의 칸에 있는 카운트 증가시키기
- a[i]를 포함 시켰을 때, 제한된 크기인 k보다 클 경우에 처음 나왔던 a[i]와 동일한 수 까지 빼주기
- 최장 부분 수열의 최대 개수를 출력
코드
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
a = list(map(int, input().split()))
count = [0] * 100001
start, result = 0, 0
for i in range(n):
count[a[i]] += 1
# a[i]를 포함 시켰을 때, 제한된 크기인 k보다 클 경우에 처음 나왔던 a[i]와 동일한 수 까지 빼주기
while count[a[i]] > k:
count[a[start]] -= 1
start += 1
# 최장 부분 수열의 개수가 큰 것을 고르는 과정
result = max(result, i - start + 1)
# 결과 출력
print(result)
반응형
'알고리즘 문제 > 백준' 카테고리의 다른 글
(백준 알고리즘 문제풀이) 21921번 블로그 (0) | 2022.07.27 |
---|---|
(백준 알고리즘 문제풀이) 11441번 합 구하기 (0) | 2022.07.27 |
(백준 알고리즘 문제풀이) 1456번 거의 소수 (0) | 2022.07.26 |
(백준 알고리즘 문제풀이) 1978번 소수찾기 (0) | 2022.07.26 |
(백준 완전탐색 문제풀이) 15656번 N과 M (7) (0) | 2022.07.26 |
Comments