Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 8979] 올림픽 본문
반응형
메달 개수 정보를 담은 클래스 생성 > 금, 은, 동메달 수에 따른 정렬 > 등수 구함 순으로 풀었다.
코드가 쓸데없이 길지만 구현만 하면 되는 문제라 설계만 잘하면 술술 풀리는 문제이다.
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