Notice
Recent Posts
Recent Comments
tony9402
[백준 3078] 좋은 친구 본문
반응형
3078번: 좋은 친구
첫째 줄에 N과 K가 주어진다. (3 ≤ N ≤ 300,000, 1 ≤ K ≤ N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다.
www.acmicpc.net
길이가 $K + 1$인 $[l, r]$ 구간을 잡고 슬라이딩 윈도우로 보면서 $[l, r]$ 구간에서 $l$ 번째와 문자열의 길이가 같은 것의 개수를 세주면 된다.
import sys
def input():
return sys.stdin.readline().rstrip()
N, K = map(int, input().split())
S = [input() for i in range(N)]
cnt = [0 for i in range(21)]
ans, r = 0, -1
for i in range(N):
while r + 1 < N and r + 1 - i <= K:
r += 1
cnt[len(S[r])] += 1
ans += cnt[len(S[i])] - 1
cnt[len(S[i])] -= 1
print(ans)
반응형
'알고리즘 > Baekjoon Online Judge' 카테고리의 다른 글
[백준 1347] 미로 만들기 (0) | 2022.06.14 |
---|---|
[백준 4991] 로봇 청소기 (0) | 2022.06.11 |
[백준 2151] 거울 설치 (0) | 2022.06.10 |
[백준 22949] 회전 미로 탐색 (0) | 2022.06.09 |
[백준 5545] 최고의 피자 (0) | 2022.06.07 |
Comments