백준

백준 8979 올림픽(Java)

Park DJ 2023. 1. 22. 23:15

https://www.acmicpc.net/problem/8979

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net


 

해석 및 팁

 


 

이 문제를 풀때는 모든 나라의 순위를 구하는것 보다는 순위를 알고 싶은 나라를 기준으로 정하고 그것보다 금메달 많은 나라가 있으면 rank를 +1 하고 금메달이 같다면 은메달 수를 비교하고 은메달 수가 같으면 동메달 수를 비교하여 rank값을 더해주면 쉽게 풀립니다.

 

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
   
    int n = sc.nextInt();
    int k = sc.nextInt();
    int rank = 1;

    int[][] arr = new int[n+1][3];
    
    for(int i = 1; i <= n; i++) {
      int num = sc.nextInt();
      arr[num][0] = sc.nextInt();     //금메달
      arr[num][1] = sc.nextInt();     //은메달
      arr[num][2] = sc.nextInt();     //동메달
    }

    for(int i = 1; i <= n; i++) {
      if(arr[i][0] > arr[k][0]) rank++;                       //금메달비교
      else if(arr[i][0] == arr[k][0] && arr[i][1] > arr[k][1]) rank++;      //은메달비교
      else if(arr[i][0] == arr[k][0] && arr[i][1] == arr[k][1] && arr[i][2] > arr[k][2]) rank++;
    }  //동메달비교

    System.out.println(rank);
  }
}