1. 유형
우선순위 정렬, 구현
2. 자료구조
ArrayList
3. 기능
N개의 프레임 중에서 중복된 것을 찾기 -> 추천수 업
중복되지 않으면 -> 앞에꺼 제거후 푸쉬
N개가 다 채워졌는지 탐색 -> 다 채워짐
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
static int N, K;
static class Pair implements Comparable<Pair> {
int val, up, day;
public Pair(int val, int up, int day) {
this.val = val;
this.up = up;
this.day = day;
}
@Override
public int compareTo(Pair o) {
if (this.up == o.up) {
return this.day - o.day;
}
return this.up - o.up;
}
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
N = Integer.valueOf(st.nextToken());
st = new StringTokenizer(in.readLine());
K = Integer.valueOf(st.nextToken());
st = new StringTokenizer(in.readLine());
ArrayList<Pair> list = new ArrayList<>();
for (int i = 0; i < K; i++) {
int num = Integer.valueOf(st.nextToken());
boolean flag = false;
for (Pair pair : list) {// 같은게 있는지 파악
if (pair.val == num) {
flag = true;
pair.up++;
break;
}
}
if (!flag) {
if (list.size() == N) {
list.remove(0);
list.add(new Pair(num, 1, i));
}else {// 아직 프레임이 꽉 안참
list.add(new Pair(num, 1, i));
}
}
Collections.sort(list);
}
Collections.sort(list, new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
return o1.val - o2.val;
}
});
for (Pair p : list) {
System.out.print(p.val + " ");
}
}
}
5. 배운점
Collections.sort를 할때 내장 함수 사용하기.
new Comparator<Pair>(){
} 이 부분이 헷갈렸다.
다음 사용에서 까먹지 않도록 복습
'알고리즘 > 백준' 카테고리의 다른 글
백준 13335 - 트럭(java) (0) | 2021.01.02 |
---|---|
백준 5567 - 결혼식(java) (0) | 2021.01.02 |
백준 1034 - 램프(java) (0) | 2020.12.18 |
[백준 - 20208] 골드5 - 진우의 민트초코우유(java) (0) | 2020.12.16 |
[백준 - 20303] 골드3 - 할로윈의 양아치 (0) | 2020.12.13 |