문제 링크
풀이
각 플레이어의 카드를 정렬하고 순서대로 큰 값부터 비교하면서 점수를 계산해주면 된다.
Java 코드
더보기
List의 배열을 어떤 식으로 만드는지 몰라서 이것저것 시도하다가 동작되는 코드를 찾았다.
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
List<Integer> arr[] = new ArrayList[N];
for (int i = 0; i < N; ++i) {
st = new StringTokenizer(br.readLine());
arr[i] = new ArrayList<>();
for (int j = 0; j < M; ++j) arr[i].add(Integer.parseInt(st.nextToken()));
arr[i].sort((a, b) -> a - b);
}
int score[] = new int[N];
for (int i = M - 1; i >= 0; --i) {
int maxScore = 0;
for (int j = 0; j < N; ++j) maxScore = Math.max(maxScore, arr[j].get(i));
for (int j = 0; j < N; ++j) if (arr[j].get(i) == maxScore) score[j]++;
}
int maxScore = Arrays.stream(score).reduce(0, Integer::max);
StringBuilder out = new StringBuilder();
for (int i = 0; i < N; ++i) if (score[i] == maxScore) out.append(i + 1 + " ");
System.out.println(out);
}
}
'PS > boj' 카테고리의 다른 글
[BOJ] 20673 Covid-19 (0) | 2021.01.20 |
---|---|
[BOJ] 1498 주기문 (0) | 2021.01.19 |
[BOJ] 1522 문자열 교환 (0) | 2021.01.19 |
[BOJ] 17091 단어 시계 (0) | 2021.01.18 |
[BOJ] 10823 더하기 2 (0) | 2021.01.18 |