본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 5533 유니크 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 21.
728x90
반응형

BaekJoon 백준 5533 유니크 문제는 각 플레이어는 1 이상 100 이하의 정수를 카드에 적어 제출한다. 자신과 같은 수를 쓴 사람이 없다면, 자신이 쓴 수와 같은 점수를 얻는다. 게임을 3번 했을 때, 3번 게임에서 얻은 총점수를 구하는 문제다. 난이도는 Bronze 1이다.

 

BaekJoon 5533 유니크 문제 정보

출처

- https://www.acmicpc.net/problem/5533

알고리즘 분류

- 수학, 구현, 사칙연산

난이도

- 브론즈 1 / Bronze 1

 

유니크 문제 요약

  • N명의 각 플레이어는 1 이상 100 이하의 정수를 카드에 적어 제출한다. (2 ≤ N ≤ 200)
  • 각 플레이어는 자신과 같은 수를 쓴 사람이 없다면, 자신이 쓴 수와 같은 점수를 얻는다. 만약, 같은 수를 쓴 다른 사람이 있는 경우에는 점수를 얻을 수 없다.
  • 이 게임을 3번 했다. 각 플레이어가 각각 쓴 수가 주어졌을 때, 3번 게임에서 얻은 총점수를 구하여 출력한다.

 

문제 풀이 과정

  1. 게임 라운드 별로 참가자들이 제출한 정수를 이차원 리스트에 저장한다.
  2. 라운드 별로 참가자가 제출한 정수와 같은 정수가 2개 이상이면 0점을, 없으면 제출한 점수를 새로운 점수 리스트에 누적하여 저장한다.
  3. 각 플레이어가 3번 게임에서 얻은 총점수를 출력한다.

 

코드 및 설명
  • num [][] - 게임 라운드 별로 참가자들이 제출한 정수 저장한 이차원 리스트
  • score [] - 플레이어 별 게임 후 누적 점수
N = int(input())
num = [[], [], []]
for _ in range(N):
    a, b, c = map(int, input().split())
    num[0].append(a)
    num[1].append(b)
    num[2].append(c)

score = [0] * N
for i in range(3):
    for j in range(N):
        # 같은 수가 2개 이상이면 0점
        if num[i].count(num[i][j]) >= 2:
            score[j] += 0
        # 같은 수가 없으면 점수 획득
        else:
            score[j] += num[i][j]

for s in score:
    print(s)

BaekJoon 백준 5533 유니크 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글