Skip to content

Commit c86d5dd

Browse files
committed
[BOJ] 3078 좋은 친구 (G4)
1 parent 4a3a0b2 commit c86d5dd

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

최어진/10주차/260304.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# 백준 3078번: 좋은 친구
2+
3+
from collections import defaultdict
4+
import sys
5+
6+
input = sys.stdin.readline
7+
8+
# N, K <= 3 * 10^5
9+
N, K = map(int, input().rstrip().split())
10+
names = [len(input().rstrip()) for _ in range(N)]
11+
# print(names)
12+
13+
# '좋은 친구'의 2가지 조건
14+
# 1. 인덱스(등수) 차이가 K 이하일 것
15+
# 2. 글자수가 같을 것
16+
17+
# 브루트포싱의 시간복잡도
18+
# 각 사람마다 나머지 사람에 대해서 조사 -> O(N^2)
19+
# 정렬되어 있다는 특성이 있으므로 슬라이딩 윈도우로 접근해야 할 듯.. 어떤 방법이든 O(N^2)보다는 작아야 함
20+
21+
left, right = 0, 1
22+
freq = defaultdict(int)
23+
freq[names[0]] = 1
24+
answer = 0
25+
26+
while left < right and right < N:
27+
# print(left, right)
28+
if right - left <= K:
29+
answer += freq[names[right]]
30+
freq[names[right]] += 1
31+
# print(f'answer: {answer}')
32+
right += 1
33+
else:
34+
freq[names[left]] -= 1
35+
left += 1
36+
37+
print(answer)

0 commit comments

Comments
 (0)