
문제
시간 초과 풀이
N, d, k, c = map(int, input().split())
A = []
for i in range(N):
a = int(input())
A.append(a)
count = []
for i in range(N-k+1):
start = i
end = i+k-1
a = [c]
for j in range(start, end+1):
if A[j] not in a:
a.append(A[j])
count.append(len(a))
print(max(count))
최종 풀이
N, d, k, c = map(int, input().split())
A = []
for i in range(N):
a = int(input())
A.append(a)
count = []
A += A[:-1] # 원형으로 만들기
for i in range(N):
a = [c]
a += A[i:i+k]
a = set(a)
count.append(len(a))
a =[c]
print(max(count))
이게 풀리네...?
문제
입력
출력
풀긴 풀었는데 투 포인터가 전혀 들어가지 않았다
사실 통과될 줄 몰랐다
N, K = map(int, input().split())
a = list(map(int, input().split()))
c = a.count(1)
idx = []
idx2 = []
if c < K:
print(-1)
else:
for i in range(N):
if a[i] == 1:
idx.append(i) # 인덱스 넣어놓기
for j in range(len(idx)):
v = j+K-1 # 개수만큼 인덱스 세서
if v < len(idx):
idx2.append(idx[v] - idx[j]+1) # 개수니까 + 1
else:
continue
print(min(idx2)) # 집합 개수가 가장 작은 거 구하기
# 10 2
# 1 2 2 1 2 2 2 2 2 1
#4
문제
입력
출력
힌트
풀이
시간 초과 풀이
N = int(input()) # 알파벳의 종류 최대 개수
S = list(input().rstrip()) # 문자열
answer = []
for i in range(len(S)):
count = [S[i]]
count2 = []
start = i
start2 = i+1
while start2 < len(S):
count2.append(S[start])
if S[start2] not in count:
count.append(S[start2])
if len(count) > N:
break
start += 1
start2 += 1
answer.append(len(count2))
print(max(answer))