[Baekjoon] 23246_Sport Climbing Combined
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/23246)
< Sport Climbing Combined >
๋ฌธ์ ํ์ด
์์์ ๊ณฑ๊ณผ ํฉ์ ๊ตฌํ ํ ArrayList์ [๋ฑ๋ฒํธ, ํฉ์ฐ ์ ์, ๊ณฑํ ์ ์] ๋ฐฐ์ด ํํ๋ก ์ ์ฅํ๋ค. ๊ณฑํ ์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์, ๊ณฑํ ์ ์๊ฐ ๊ฐ๋ค๋ฉด ํฉ์ฐ ์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์, ํฉ์ฐ ์ ์๊ฐ ๊ฐ๋ค๋ฉด ๋ฑ๋ฒํธ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
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.Comparator;
import java.util.StringTokenizer;
public class _23246_ { // Sport Climbing Combined
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;
int n = Integer.parseInt(bf.readLine());
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int num = Integer.parseInt(st.nextToken());
int sum = 0;
int score = 1;
for (int j = 0; j < 3; j++) {
int x = Integer.parseInt(st.nextToken());
sum += x;
score *= x;
}
list.add(new int[] { num, sum, score });
}
Collections.sort(list, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[2] == o2[2]) {
if (o1[1] == o2[1]) {
return o1[0] - o2[0];
}
return o1[1] - o2[1];
}
return o1[2] - o2[2];
}
});
for (int i = 0; i < 3; i++) {
bw.write(list.get(i)[0] + " ");
}
bw.flush();
}
}
๋ณ์)
n : ์ ์์ ๋ช ์
list : ArrayList <int []>
num : ๋ฑ๋ฒํธ
sum : ํฉ์ฐ ์ ์
score : ๊ณฑํ ์ ์
์ ์์ ๋ช ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ ์ ์๋งํผ ๊ฐ ๋ฑ๋ฒํธ์ ์์๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด์ ์์ ํฉ๊ณผ ๊ณฑ์ ๊ตฌํด ArrayList์ ๋ฐฐ์ด ํํ๋ก ์ ์ฅํ๋ค. ArrayList๋ฅผ ๊ณฑํ ์ ์ ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก, ๊ณฑํ ์ ์๊ฐ ๊ฐ๋ค๋ฉด ํฉ์ฐ ์ ์ ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก, ํฉ์ฐ ์ ์๊ฐ ๊ฐ๋ค๋ฉด ๋ฑ๋ฒํธ ๊ธฐ์ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
์ต์ข ArrayList์ 0๋ฒ์งธ๋ถํฐ 2๋ฒ์งธ๊น์ง์ ๋ฑ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.