백준 유니크

KIMYEONGJUN·2025년 4월 16일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 참가자의 수 N이 주어진다. (2 ≤ N ≤ 200)
둘째 줄부터 N개 줄에는 각 플레이어가 1번째, 2번째, 3번째 게임에서 쓴 수가 공백으로 구분되어 주어진다.

각 플레이어가 3번의 게임에서 얻은 총 점수를 입력으로 주어진 순서대로 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받는다.
첫 번째 줄에서 참가자의 수를 읽고, 이후 각 참가자의 숫자를 2차원 배열에 저장해준다.
점수 계산:
각 게임에 대해 숫자의 출현 횟수를 카운트하기 위해 HashMap을 사용한다.
각 플레이어가 쓴 숫자가 유일한 경우에만 점수를 추가해준다.
결과 출력: 각 플레이어의 총 점수를 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

// 백준 5533번 문제
public class Main993 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        int[][] numbers = new int[N][3];

        // 각 플레이어의 숫자 입력 받기
        for(int i = 0; i < N; i++) {
            String[] tokens = br.readLine().split(" ");
            for(int j = 0; j < 3; j++) {
                numbers[i][j] = Integer.parseInt(tokens[j]);
            }
        }

        // 점수 합계 초기화
        int[] scores = new int[N];

        // 각 게임에 대해 점수 계산
        for(int game = 0; game < 3; game++) {
            HashMap<Integer, Integer> countMap = new HashMap<>();

            // 숫자 카운트
            for(int i = 0; i < N; i++) {
                int num = numbers[i][game];
                countMap.put(num, countMap.getOrDefault(num, 0) + 1);
            }

            // 점수 계산
            for(int i = 0; i < N; i++) {
                int num = numbers[i][game];
                if(countMap.get(num) == 1) {
                    scores[i] += num;
                }
            }
        }

        // 결과 출력
        for(int score : scores) {
            System.out.println(score);
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글