๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/3758)
< KCPC >
๋ฌธ์ ํ์ด
๊ฐ ํ๋ง๋ค ๊ฐ ๋ฌธ์ ์ ์ต๊ณ ์ ์๋ฅผ ๊ตฌํ๋ค. ๋ํ, ๊ฐ ํ๋ง๋ค ์ต์ข ์ ์, ์ ์ถ ํ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ์ ๊ตฌํ ํ ์ต์ข ์ ์, ์ ์ถ ํ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ์ ์ฐ์ ์์๋ก ๋๊ณ ์ ๋ ฌํ์ฌ ๊ตฌํ๋ ค๋ ํ์ ์์๋ฅผ ์ถ๋ ฅํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.io.InputStreamReader;
public class _3758_ { // KCPC
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 t = Integer.parseInt(bf.readLine());
for (int i = 0; i < t; i++) {
st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int id = Integer.parseInt(st.nextToken()) - 1;
int m = Integer.parseInt(st.nextToken());
ArrayList<int[]> score = new ArrayList<>();
ArrayList<int[]> info = new ArrayList<>();
for (int j = 0; j < n; j++) {
score.add(new int[k + 1]);
info.add(new int[] { j, 0, 0, 0 }); // ํ ๋ฒํธ, ์ต์ข
์ ์, ์ ์ถ ํ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ
}
for (int j = 0; j < m; j++) {
st = new StringTokenizer(bf.readLine());
int team = Integer.parseInt(st.nextToken()) - 1;
int num = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
if (score.get(team)[num] == 0 || score.get(team)[num] < s) {
info.get(team)[1] = info.get(team)[1] - score.get(team)[num] + s;
score.get(team)[num] = s;
}
info.get(team)[2] += 1;
info.get(team)[3] = j;
}
Collections.sort(info, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[1] == o2[1]) {
if (o1[2] == o2[2]) {
return o1[3] - o2[3];
}
return o1[2] - o2[2];
}
return o2[1] - o1[1];
}
});
for (int j = 0; j < n; j++) {
if (info.get(j)[0] == id) {
bw.write(j + 1 + "\n");
break;
}
}
}
bw.flush();
}
}
๋ณ์)
t : ํ ์คํธ ์ผ์ด์ค
n : ํ์ ๊ฐ์
k : ๋ฌธ์ ์ ๊ฐ์
id : ํ์ ID
m : ๋ก๊ทธ ์ํธ๋ฆฌ์ ๊ฐ์
score : ๊ฐ ํ์ ๊ฐ ๋ฌธ์ ๋ณ ์ ์
info : ๊ฐ ํ์ ํ ๋ฒํธ, ์ต์ข ์ ์, ์ ์ถ ํ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ
team : ํ ID
num : ๋ฌธ์ ๋ฒํธ
s : ํ๋ํ ์ ์
ํ ์คํธ ์ผ์ด์ค ์๋งํผ ์๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ํ์ ๊ฐ์, ๋ฌธ์ ์ ๊ฐ์, ํ์ ID, ๋ก๊ทธ ์ํธ๋ฆฌ์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
2) ๊ฐ ํ์ ๋ฌธ์ ๋ณ ์ ์์, ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด score, info๋ฅผ ์ด๊ธฐํํ๋ค.
3) ๋ก๊ทธ ์ํธ๋ฆฌ์ ๊ฐ์๋งํผ ํ ID, ๋ฌธ์ ๋ฒํธ, ํ๋ํ ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ทธ ํ์ ๋ฌธ์ ์ ๋ํ ์ ์๋ฅผ ์ต๊ณ ์ ์๋ก ์ ๋ฐ์ดํธํ๋ค. ๋ฌธ์ ๋ฅผ ์ ์ถํ ๋๋ง๋ค ์ ์ถ ํ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
4) ์ต์ข ์ ์ ๋ด๋ฆผ์ฐจ์, ์ ์ถ ํ์ ์ค๋ฆ์ฐจ์, ๋ง์ง๋ง ์ ์ถ ์๊ฐ ์ค๋ฆ์ฐจ์ ์์ผ๋ก ์ ๋ ฌํ๋ค.
5) ๋ฌธ์ ์์ ์ฃผ์ด์ง ํ ID์ ์์๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 14225_๋ถ๋ถ์์ด์ ํฉ (0) | 2024.02.12 |
---|---|
[Baekjoon] 10451_์์ด ์ฌ์ดํด (0) | 2024.02.09 |
[Baekjoon] 3085_์ฌํ ๊ฒ์ (0) | 2024.02.07 |
[Baekjoon] 2578_๋น๊ณ (1) | 2024.02.06 |
[Baekjoon] 19238_์คํํธ ํ์ (1) | 2024.02.05 |