๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 9787_Olympic Games Ranking

๋ฟŒ์•ผ._. 2025. 7. 29. 10:20
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/9787)

< Olympic Games Ranking >

 

๋ฌธ์ œ ํ’€์ด 

 

๋‹ค์Œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

1) ๊ธˆ๋ฉ”๋‹ฌ ์ˆœ
2) ์€๋ฉ”๋‹ฌ ์ˆœ
3) ๋™๋ฉ”๋‹ฌ ์ˆœ
4) ์•ŒํŒŒ๋ฒณ ์ˆœ

 

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class _9787_ { // Olympic Games Ranking
	static class Nation implements Comparable<Nation> {
		String country;
		int gold;
		int silver;
		int bronze;
		int sum;

		public Nation(String country, int gold, int silver, int bronze) {
			this.country = country;
			this.gold = gold;
			this.silver = silver;
			this.bronze = bronze;
			this.sum = gold + silver + bronze;
		}

		@Override
		public int compareTo(Nation o) {
			if (o.gold == this.gold) {
				if (o.silver == this.silver) {
					if (o.bronze == this.bronze) {
						return this.country.compareTo(o.country);
					}
					return o.bronze - this.bronze;
				}
				return o.silver - this.silver;
			}
			return o.gold - this.gold;
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		String str = "";
		ArrayList<Nation> list = new ArrayList<>();
		while ((str = bf.readLine()) != null && !str.equals("")) {
			st = new StringTokenizer(str);

			list.add(new Nation(st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()),
					Integer.parseInt(st.nextToken())));
		}
		Collections.sort(list);

		int idx = 1;
		for (int i = 0; i < list.size(); i++) {
			if (i > 0 && !(list.get(i - 1).gold == list.get(i).gold && list.get(i - 1).silver == list.get(i).silver
					&& list.get(i - 1).bronze == list.get(i).bronze)) {
				idx = i + 1;
			}
			bw.write(idx + " " + list.get(i).country + " " + list.get(i).gold + " " + list.get(i).silver + " "
					+ list.get(i).bronze + " " + list.get(i).sum + "\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
str : ์ž…๋ ฅ๊ฐ’
list : ArrayList <Nation>
idx : ์ˆœ์œ„

 

Nation

๊ตญ๊ฐ€ ์ด๋ฆ„, ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜, ์€๋ฉ”๋‹ฌ ์ˆ˜, ๋™๋ฉ”๋‹ฌ ์ˆ˜, ์ด ๋ฉ”๋‹ฌ ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ๊ฐ€์ง„๋‹ค. ์ •๋ ฌ ์กฐ๊ฑด์€ ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜, ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์€๋ฉ”๋‹ฌ ์ˆ˜, ์€๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋™๋ฉ”๋‹ฌ ์ˆ˜, ๋™๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ตญ๊ฐ€ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

Main

์ž…๋ ฅ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๊ตญ๊ฐ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ArrayList์— ์ €์žฅํ•œ๋‹ค. ์ •๋ ฌ ํ›„ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, ์ „ ๊ตญ๊ฐ€์™€ ๋ชจ๋“  ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ ํ›„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 9609_PSU Campuses  (1) 2025.08.11
[Baekjoon] 3443_Reaux! Sham! Beaux!  (4) 2025.07.30
[Baekjoon] 9491_Politics  (2) 2025.07.28
[Baekjoon] 15198_NKD  (2) 2025.07.25
[Baekjoon] 10442_Rank Order  (1) 2025.07.24