시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Back_8979 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
ArrayList<nation> arr = new ArrayList<>();
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int g = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
arr.add(new nation(n, g, s, b));
}
Collections.sort(arr);
int ans =1;
if(arr.get(0).n==K) {
System.out.println(ans);
System.exit(0);
}
for (int i = 1; i < N; i++) {
if(arr.get(i).g==arr.get(i-1).g&&
arr.get(i).s==arr.get(i-1).s&&
arr.get(i).b==arr.get(i-1).b) {
}else {
ans=i+1;
}
if(arr.get(i).n==K) {
break;
}
}
System.out.println(ans);
}
static class nation implements Comparable<nation>{
int n;
int g;
int s;
int b;
public nation(int n, int g, int s, int b) {
super();
this.n = n;
this.g = g;
this.s = s;
this.b = b;
}
@Override
public int compareTo(nation o) {
if(this.g==o.g) {
if(this.s==o.s) {
return o.b-this.b;
}
return o.s-this.s;
}
return o.g-this.g;
}
}
}
※ 내 생각
이 문제는 구현을 이용해서 푸는 문제입니다.
저는 구현과 함께 그리디 알고리즘을 이용해서 문제를 풀었습니다.
클래스에 금, 은, 동에 대한 내림차순 정렬을 진행합니다.
정렬된 내용을 가지고 찾고자 하는 위치를 찾아주면 됩니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_3273 두 수의 합(자바) / 투 포인트 (0) | 2021.11.18 |
---|---|
백준_14235 크리스마스 선물 (0) | 2021.11.17 |
백준_9996 한국이 그리울 땐 서버에 접속하지(자바) / 문자열 (0) | 2021.11.15 |
백준_1092 배(자바) / 그리디 (0) | 2021.11.14 |
백준_2616 소형기관차(자바) / 누적합 (0) | 2021.11.13 |