728x90
https://www.acmicpc.net/problem/1713
1713번: 후보 추천하기
첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대
www.acmicpc.net
풀이)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main_BJ_1713_후보추천하기 {
static class Info implements Comparable<Info>{
int num;
int cnt;
int time;
public Info(int num, int cnt, int time){
this.num = num;
this.cnt = cnt;
this.time = time;
}
@Override
public int compareTo(Info info){
if(this.cnt==info.cnt)
return this.time-info.time;
else if(this.cnt<info.cnt)
return -1;
else return 1;
}
}//info
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int p = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
LinkedList<Info> list = new LinkedList<>();
for(int i=0; i<p; i++){
int student = Integer.parseInt(st.nextToken());
if(list.size() < n){
boolean flag = false;
for(int j=0; j<list.size(); j++){
if(list.get(j).num == student){
list.get(j).cnt++;
flag = true;
break;
}
}
if(!flag)
list.add(new Info(student, 1, i));
}
else {
Collections.sort(list);
boolean flag = false;
for (int j = 0; j < list.size(); j++) {
//있을 때
if (list.get(j).num == student) {
list.get(j).cnt++;
flag = true;
break;
}
}
if(!flag){
list.remove(0);
list.add(new Info(student, 1, i));
}
}
}
int[] pic = new int[n];
for(int i=0; i<list.size(); i++){
pic[i] = list.get(i).num;
}
Arrays.sort(pic);
for(int i=0 ;i<n; i++){
if(pic[i] != 0)
System.out.print(pic[i]+" ");
}
}//main
}
시간을 계산하기가.... 좀 까다로웠다..
처음에는 일일히 셌는데, 그럴필요 없이 class 하나 정해두고 만들면 된다.
또한, 시간 부분은 그냥 추천 그림 개수에 맞춰서 for문을 돌 때, Index로 저장해두면,
index가 작은 친구가 자동으로 오래 저장된 친구라 그렇게 하면 된다.
처음에 아주 간단하다고 생각하고 풀었는데,,,, 생각보다 많이 틀려서 당황한 문제...
728x90
'코테 > 백준' 카테고리의 다른 글
백준 5014 스타트링크(JAVA) (0) | 2023.06.15 |
---|---|
백준 1316 그룹 단어 체커(JAVA) (0) | 2023.06.14 |
백준 7562 나이트의 이동(JAVA) (0) | 2023.06.04 |
백준 1912 연속합(JAVA) (0) | 2023.06.03 |
백준 15651 N과 M(3) (JAVA) (0) | 2023.05.31 |