Today
Total
Archives
05-09 18:49
관리 메뉴

tony9402

[백준 3078] 좋은 친구 본문

알고리즘/Baekjoon Online Judge

[백준 3078] 좋은 친구

ssu_gongdoli 2022. 6. 11. 21:44
반응형

 

 

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