Koala - 15기/기초 알고리즘 스터디

[백준 / Python] 5533번 : 유니크

oerreo 2024. 8. 4. 17:38

https://acmicpc.net/problem/5533

문제

 

풀이

n = int(input())
arr = [list(map(int,input().split())) for _ in range(n)]
ans = [0]*n
for i in range(3):
    d = {}
    for j in range(n):
        score = arr[j][i]
        if score in d:
            d[score] += 1
        else:
            d[score] = 1

    for k in range(n):
        score = arr[k][i]
        if d[score] == 1:
            ans[k] += score

print('\n'.join(map(str,ans)))

1. 참가자 수를 n으로 받고 점수를 n x 3인 2차원 리스트에 저장

2. 정답 배열을 n만큼 0으로 할당

3. row가 참가자 수이고, column이 게임 수이므로, column부터 for문을 돌림.

4. column = 0 일 때 -> 1번째 게임

5. 딕셔너리로 이번 게임에 나온 점수인지를 체크

6. 첫번째 게임의 점수를 딕셔너리에 모두 저장했다면, 한 번만 나온 점수를 확인하고 그 참가자에게 점수를 줌

7. 다음 게임으로 넘어감