[백준] 1713번 후보 추천하기 (java, 시뮬레이션, 구현)
728x90
반응형
각 학생의 추천횟수를 저장하는 배열을 따로 만들어주고 정렬을 위한 학생 객체는 리스트로 만들어줘서 추가, 삭제가 용이하도록 하였다.
package algo0419;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Student implements Comparable<Student>{
int num;
int total;
int time;
public Student(int num, int total, int time) {
super();
this.num = num;
this.total = total;
this.time = time;
}
@Override
public int compareTo(Student o) {
if(this.total==o.total) {
return this.time-o.time;
}else if(this.total<o.total)return -1;
else return 1;
}
}
public class B_1713_후보추천하기 {
static int n,m;
static int[] students;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
students=new int[101];//학생 번호 100까지
ArrayList<Student> list=new ArrayList<>();
for (int i = 0; i < m; i++) {//1000번 이하
int student=sc.nextInt();//추천학생 번호
if(students[student]>0) {//있다
students[student]+=1;
for (int j = 0; j <list.size(); j++) {
if(list.get(j).num==student) {
list.get(j).total+=1;
break;
}
}
}else {//액자에 새로 추가
if(list.size()>=n) {
Collections.sort(list);
int num=list.get(0).num;
students[num]=0;
list.remove(0);
}
list.add(new Student(student,1,i));
students[student]=1;
}
}
for (int i = 0; i <101; i++) {
if(students[i]!=0) {
System.out.print(i+" ");
}
}
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 14891번 톱니바퀴 (java, 시뮬레이션) (0) | 2021.04.21 |
---|---|
[백준] 17822번 원판 돌리기 (java, 시뮬레이션) (0) | 2021.04.21 |
[백준] 17837번 새로운 게임2 (java, 시뮬레이션, 구현) (0) | 2021.04.20 |
[백준] 2504번 괄호의 값 (java, 구현, stack) (0) | 2021.04.19 |
[백준] 5567번 결혼식 (bfs, 구현 ) (0) | 2021.04.19 |
TAGS.