https://softeer.ai/practice/info.do?idx=1&eid=1309&sw_prbl_sbms_sn=179853
Softeer
์ฐ์ต๋ฌธ์ ๋ฅผ ๋ด์ Set์ ์ ํํด์ฃผ์ธ์. ์ทจ์ ํ์ธ
softeer.ai
1. ๋ฌธ์
๊ฐ ์ฐธ๊ฐ์์ ๋ํ๋ณ ๋ฑ์ ๋ฐ ์ต์ข ๋ฑ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
2. ํ์ด
์๋ฎฌ๋ ์ด์ ๋ฌธ์ ์ด๋ค.
1. idx, score๋ฅผ ๊ฐ์ด ์ ์ฅํ๋ Contest ํด๋์ค ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฌ๊ธฐ์ ์ ๋ ฅ์ ๋ฐ๋๋ค. (๋ง์ง๋ง์ค๋)
2. ์ ๋ ฅ์ ๋ค ๋ฐ์์ผ๋ฉด score๊ฐ ํฐ ์์ผ๋ก ๋๋ค์์ ์จ์ ์ ๋ ฌํ๋ค.
- ์ฌ๊ธฐ์ ๋๋ค์ ๋๋ฌธ์ ํค๋งธ๋๋ฐ,
for (Contest[] con : c) {
Arrays.sort(con, (o1,o2)->o2.score - o1.score);
}
=> ์ด๊ฒ ๋ง๋ ํํ์ธ๋ฐ ๋๋ ์๊พธ ํ์ดํ ๋ค์ return์ ๋ถ์ฌ์ ๋ฌธ์ ๊ฐ ๋์๋ค.
3. rank๋ฅผ ๋ฃ์ด์ฃผ๊ธฐ ์ํ์ฌ int ํ์ ์ 2์ฐจ์๋ฐฐ์ด result๋ฅผ ๋ง๋ค์ด์ Contest๋ฐฐ์ด ์์ ์ ๋ ฌ๋ ์์๋๋ก idx๋ฅผ ๊บผ๋ด์ ํด๋น idx์ rank๋ฅผ ์ฐจ๋ก๋๋ก ๋ฃ์ด์ค๋ค.
- rank ๊ณ์ฐ ๋ฐฉ๋ฒ์
Contest๋ฐฐ์ด์ row๋ง๋ค for๋ฌธ์ ๋๋ฆฌ๊ณ
(rank=1, cnt=1 ์ด๊ธฐํํ๊ณ ์์, 0๋ฒ์งธ๋ result์ rank=1์ ๋ฃ์ด์ฃผ๊ณ ์์ํ๋ค.)
(๋๋ฌธ์ ์ธ๋ฑ์ค๋ 1๋ฒ์งธ๋ถํฐ ์์)
์ด์ ์ score์ ๊ฐ์ผ๋ฉด rank๋ ๊ทธ๋๋ก ๋ฃ์ด์ฃผ๊ณ cnt๋ง 1์ฉ ๋๋ ค์ค๋ค. (๋ฑ์๋ ๋์ผ, ๋ค์ ๋ฑ์๋ฅผ ์ํด cnt++)
์ด์ ์ score์ ๋ค๋ฅด๋ฉด rank์ cnt๋ฅผ ๋ํ ๊ฐ์ result์ ๋ฃ์ด์ฃผ๊ณ cnt๋ ๋ค์ 1๋ก ์ด๊ธฐํํ๋ค.
Arrays.sort(~) ์ ๋ ฌ์ด ํต์ฌ์ธ๋ฏ
3. ์ฝ๋
import java.util.*;
import java.io.*;
public class Main
{
static int N, last, r;
static Contest[][] c;
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
c = new Contest[4][N];
for (int i=0; i<3; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<N; j++) {
c[i][j] = new Contest(j, Integer.parseInt(st.nextToken()));
}
} //์
๋ ฅ ๋
//๋ํ๋ณ ๋ฑ์
for (int j=0; j<N; j++) {
int sum = 0;
for (int i=0; i<3; i++) {
sum += c[i][j].score;
}
c[3][j] = new Contest(j, sum);
}
//์ค๋ง๋ค ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
for(Contest[] con : c) { //๋ณต์ฌ ์๋ ์ค์ ๊ฐ์
Arrays.sort(con, (o1, o2) -> o2.score - o1.score);
}
//์ต์ข
๋ฑ์
int[][] result = new int[4][N];
for (int i=0; i<4; i++) {
int rank = 1;
int cnt = 1;
result[i][c[i][0].idx] = rank;
for (int j=1; j<N; j++) {
if (c[i][j-1].score == c[i][j].score) {
result[i][c[i][j].idx] = rank;
cnt++;
} else {
rank += cnt;
result[i][c[i][j].idx] = rank;
cnt = 1;
}
}
}
for(int i=0; i<4; i++) {
for (int j=0; j<N; j++) {
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
static class Contest{
int idx, score;
Contest(int idx, int score) {
this.idx = idx;
this.score = score;
}
}
}
4. ์ฌ๋ด
๋๋ค์ ๋งค๋ฒ ํท๊ฐ๋ ธ๋๋ฐ ์ด๋ฒ์ ๋ค์ ์ ๋ฆฌํ ์ ์์ด์ ์ข์๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ณ ์๊ฐ ๋๊ณ ์ถ๋ค..
'Algorithm > Softeer' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Softeer] ๋๊ณ ํ ์คํธ ์์ ์์ธก - Java (0) | 2023.05.07 |
---|---|
[Softeer] ์ฑ์ ํ๊ท - Java (0) | 2023.05.06 |
[Softeer] ๊ฐ์์ค ๋ฐฐ์ - Java (0) | 2023.04.29 |
[Softeer] GBC - Java (0) | 2023.04.29 |
[Softeer] [21๋ ์ฌ์ง์ ๋ํ ์์ ] ์ ๊ดํ - Java (0) | 2023.04.25 |