백준 17225 - 좋은 친구
Updated:
Java
17225 번 - 좋은 친구
문제
상근이네 반의 N명 학생들의 이름이 성적순으로 주어졌을 때, 좋은 친구가 몇 쌍이나 있는지 구하는 프로그램을 작성하시오. 좋은 친구는 등수의 차이가 K보다 작거나 같으면서 이름의 길이가 같은 친구이다.
접근 방법
구현
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
stk = new StringTokenizer(br.readLine());
int n = stoi(stk.nextToken());
int k = stoi(stk.nextToken());
Queue<Long>[] nameLen = new LinkedList[21];
for(int i = 1; i <= 20; i++) {
nameLen[i] = new LinkedList<Long>();
}
long cnt = 0;
for(long i = 1; i <= n; i++) {
int len = br.readLine().length();
while(!nameLen[len].isEmpty() && i - nameLen[len].peek() > k) {
nameLen[len].poll();
}
cnt += nameLen[len].size();
nameLen[len].offer(i);
}
System.out.println(cnt);
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}
총평
난이도
★★★★★