본문 바로가기

PS/boj

[BOJ] 12760 최후의 승자는 누구?

문제 링크

www.acmicpc.net/problem/12760

풀이

각 플레이어의 카드를 정렬하고 순서대로 큰 값부터 비교하면서 점수를 계산해주면 된다.

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