Dev.baelanche

[백준 8979] 올림픽 본문

Data Structure & Algorithm/PS - JAVA

[백준 8979] 올림픽

baelanche 2019. 4. 10. 20:00
반응형

 

 

메달 개수 정보를 담은 클래스 생성 > 금, 은, 동메달 수에 따른 정렬 > 등수 구함 순으로 풀었다.

코드가 쓸데없이 길지만 구현만 하면 되는 문제라 설계만 잘하면 술술 풀리는 문제이다.

 

 

public class Main {

    static class Country {
        int rank;
        int num;
        int gold;
        int silver;
        int bronze;
        
        Country(int num, int gold, int silver, int bronze) {
            this.num = num;
            this.gold = gold;
            this.silver = silver;
            this.bronze = bronze;
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int k = sc.nextInt();
        Country ca[] = new Country[n];
        for(int i=0; i<n; i++) {
            Country c = new Country(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
            ca[i] = c;
        }
        
        sort(ca);
        setRank(ca);
        
        System.out.println(getRank(ca, k));
        sc.close();
    }
    
    public static void sort(Country[] ca) {
        for(int i=1; i<ca.length; i++) {
            for(int j=1; j<ca.length; j++) {
                if(ca[j-1].gold < ca[j].gold) {
                    Country tmp = ca[j-1];
                    ca[j-1] = ca[j];
                    ca[j] = tmp;
                } else if(ca[j-1].gold == ca[j].gold && ca[j-1].silver < ca[j].silver) {
                    Country tmp = ca[j-1];
                    ca[j-1] = ca[j];
                    ca[j] = tmp;
                } else if(ca[j-1].gold == ca[j].gold && ca[j-1].silver == ca[j].silver && ca[j-1].bronze < ca[j].bronze) {
                    Country tmp = ca[j-1];
                    ca[j-1] = ca[j];
                    ca[j] = tmp;
                }
            }
        }
    }
    
    public static void setRank(Country[] ca) {
        int rank = 1;
        for(int i=0; i<ca.length; i++) {
            ca[i].rank = rank;
            if(i-1 > 0 && ca[i].gold == ca[i-1].gold && ca[i].silver == ca[i-1].silver && ca[i].bronze == ca[i-1].bronze)
                ca[i].rank = ca[i-1].rank;
            rank++;
        }
    }
    
    public static int getRank(Country[] ca, int k) {
        for(int i=0; i<ca.length; i++) {
            if(ca[i].num == k)
                return ca[i].rank;
        }
        return 0;
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 3053] 택시 기하학  (0) 2019.04.10
[백준 2798] 블랙잭  (0) 2019.04.10
[백준 2468] 안전 영역  (0) 2019.04.10
[백준 11403] 경로 찾기  (0) 2019.04.10
[백준 10026] 적록색약  (0) 2019.04.09
Comments