[백준/파이썬] 2531번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 2531번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
백준 2531번 문제를 풀이합니다.
코드
`python from sys import stdin
n,d,k,c=map(int,stdin.readline().split()) a=[int(stdin.readline()) for _ in range(n)]
z,m,r={i:0 for i in range(1,d+1)},0,set()
일단 먹고 뱉는식으로 생각
for i in range(k): if z[a[i]] == 0: m += 1 z[a[i]]+=1 j = 1 while a[-j] == c: j-=1 if z[c] == 0: m += 1 z[c] += 1 if a[k%n] == c: if z[c] == 0: m += 1 z[c] += 1
pl,pr=0, for i in range(1,n+1): j = 1 while a[i-j] == c: j-=1 for idx in range(pl, i-j): z[a[idx]]-=1 if z[a[idx]] < 1: m-=1 pl,j=i-j,0 while a[(i+k+j)%n] == c: j+=1 for idx in range(pr, i-j): if z[a[idx]] < 1: m+=1 z[a[idx]]+=1 pr=(i+k+j)%n r.add(m) print(max(m))
```
설명
저장소의 기존 제출 코드를 기준으로 정리한 풀이입니다.
댓글남기기