:)
[백준]겹치는 건 싫어, [백준]회전초밥 본문
https://www.acmicpc.net/problem/20922
20922번: 겹치는 건 싫어
홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열
www.acmicpc.net
투포인터
1) lo, hi =0, 0, cnt = {}
2) 종료조건 : hi 포인터가 끝까지 가면 종료
3) 해당 정수 dict에 count가 k개 미만 or Not 분기 설정
import sys
from collections import defaultdict
def solution(n,k,arr):
lo,hi = 0,0
ans = 0
cnt = defaultdict(int)
while hi < n:
if cnt[arr[hi]] < k:
cnt[arr[hi]] +=1
hi +=1
else:
cnt[arr[lo]] -=1
lo +=1
ans = max(ans, hi-lo)
return ans
N, K = map(int, sys.stdin.readline().split())
arr = [*map(int, sys.stdin.readline().split())]
print(solution(N,K,arr))
c++ 풀이
#include<iostream>
#include<algorithm>
using namespace std;
int arr[200000];
int cnt[100000];
int main(){
cin.tie(NULL);
cout.tie(NULL);
int n,k;
cin >> n >> k;
int ans = 0;
int lo = 0, hi = 0;
for(int i=0; i<n;i++) {
cin>>arr[i];
}
while(hi < n) {
if(cnt[arr[hi]]<k){
cnt[arr[hi]] ++;
hi++;
} else {
cnt[arr[lo]] --;
lo++;
}
ans = max(ans, hi-lo);
}
cout << ans;
return 0;
}
https://www.acmicpc.net/problem/15961
15961번: 회전 초밥
첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2
www.acmicpc.net
투포인터
1) while 문 사용 (break 조건 --> lo 포인터가 n 보다 작은경우, 초밥 종류가 K 보다 큰 경우)
2) defaultdict 사용, lo, hi +1, dictionary hi -> +1 lo -> -1 (dictionary low value 가 0 인경우 key,value 삭제)
3) dictionary 길이로 리턴
import sys
from collections import defaultdict
def solution(arr,n,d,k,c):
lo,hi = 0,0
dic = defaultdict(int)
ans = 0
dic[c] +=1 ## 쿠폰번호
while hi < k:
dic[arr[hi]] +=1
hi+=1
while lo < n:
ans = max(ans, len(dic))
dic[arr[lo]] -=1
if dic[arr[lo]] == 0:
del dic[arr[lo]]
dic[arr[hi%n]] +=1
lo +=1
hi+=1
if ans > k:
return ans
return ans
# 접시수,초밥가짓수,연속접시수,쿠폰번호
n,d,k,c = map(int, sys.stdin.readline().split())
arr = [*map(int,sys.stdin.readlines())]
print(solution(arr,n,d,k,c))
'Algorithm(python)' 카테고리의 다른 글
[백준]대표선수, [백준]입국심사 (0) | 2022.11.01 |
---|---|
[프로그래머스]주차 요금 계산 (1) | 2022.10.15 |
[프로그래머스]신고 결과 받기, [프로그래머스]양궁대회 (0) | 2022.10.08 |
[프로그래머스]튜플, [프로그래머스]스킬트리 (0) | 2022.10.05 |
[백준]꽃길, [백준]도영이가 만든 맛있는 음식, [백준]부분 삼각 수열 (0) | 2022.10.05 |