30804. 과일 탕후루
업데이트 시간 : 2025-06-30 10:38:12 +0000[Silver II] 과일 탕후루 - 30804
성능 요약
메모리: 37160 KB, 시간: 172 ms
분류
구현, 브루트포스 알고리즘, 두 포인터
제출 일자
2025년 6월 30일 19:38:01
문제 설명
은하는 긴 막대에
탕후루를 다시 만들 시간이 없었던 은하는, 막대의 앞쪽과 뒤쪽에서 몇 개의 과일을 빼서 두 종류 이하의 과일만 남기기로 했습니다. 앞에서
이렇게 만들 수 있는 과일을 두 종류 이하로 사용한 탕후루 중에서, 과일의 개수가 가장 많은 탕후루의 과일 개수를 구하세요.
입력
첫 줄에 과일의 개수
둘째 줄에 탕후루에 꽂힌 과일을 의미하는
출력
문제의 방법대로 만들 수 있는 과일을 두 종류 이하로 사용한 탕후루 중에서, 과일의 개수가 가장 많은 탕후루의 과일 개수를 첫째 줄에 출력하세요.
💡 Solutions
📄 과일 탕후루.py
import sys
from collections import defaultdict
input = sys.stdin.readline
n = int(input())
fruit_list = list(map(int, input().split()))
def max_fruits(fruits):
count = defaultdict(int)
left = 0
max_len = 0
for right in range(len(fruits)):
count[fruits[right]] += 1
# 과일 종류가 3개 이상일 경우, 왼쪽 포인터 이동
while len(count) > 2:
count[fruits[left]] -= 1
if count[fruits[left]] == 0:
del count[fruits[left]]
left += 1
max_len = max(max_len, right - left + 1)
return max_len
print(max_fruits(fruit_list))