본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 14696 딱지놀이 (Python / 파이썬)

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

BaekJoon 백준 14696 딱지놀이 문제는 두 어린이 A, B가 처음에 여러 장의 딱지를 가지고 있고, 매 라운드마다 각자 자신이 가진 딱지 중 하나를 낸다. 라운드별로 두 어린이가 낸 딱지 중 어느 쪽이 더 강력한 것인지 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 14696 딱지놀이 문제 정보

출처

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

알고리즘 분류

- 구현

난이도

- 브론즈 1 / Bronze 1

 

딱지놀이 문제 요약

  • 두 어린이 A, B가 딱지놀이를 한다. 딱지놀이 규칙은 다음과 같다. 두 어린이는 처음에 여러 장의 딱지를 가지고 있고, 매 라운드마다 각자 자신이 가진 딱지 중 하나를 낸다.
  • 딱지에는 별(★), 동그라미(●), 네모(■), 세모(▲), 네 가지 모양 중 하나 이상의 모양이 표시되어 있다. 두 어린이가 낸 딱지 중 어느 쪽이 더 강력한 것인지는 다음 규칙을 따른다.
    • 만약 두 딱지의 별의 개수가 다르다면, 별이 많은 쪽의 딱지가 이긴다.
    • 별의 개수가 같고 동그라미의 개수가 다르다면, 동그라미가 많은 쪽의 딱지가 이긴다.
    • 별, 동그라미의 개수가 각각 같고 네모의 개수가 다르다면, 네모가 많은 쪽의 딱지가 이긴다.
    • 별, 동그라미, 네모의 개수가 각각 같고 세모의 개수가 다르다면, 세모가 많은 쪽의 딱지가 이긴다.
    • 별, 동그라미, 네모, 세모의 개수가 각각 모두 같다면 무승부이다.
  • 별, 동그라미, 네모, 세모를 각각 숫자 4, 3, 2, 1로 표현한다.
  • 라운드의 수 N과 두 어린이가 순서대로 내는 딱지의 정보가 주어졌을 때, 각 라운드별로 딱지놀이의 결과를 구하여 출력한다. (1 <=N <=1,000)
  • 결과는 A가 승자라면 A, B가 승자라면 B, 무승부라면 D이다.

 

문제 풀이 과정

  1. a와 b가 낸 딱지의 모양을 숫자로 리스트에 저장한다.
  2. 낸 딱지의 모양들 중 점수가 가장 큰 모양이 1) 다르다면 더 큰 모양을 가진 사람이 이긴다.
  3. 2) 같다면 개수를 비교해야 하므로 비교할 모양을 파라미터로 갖는 round 함수를 호출한다.
  4. 비교할 모양의 개수가 1) 같다면 다음으로 점수가 큰 모양을 비교하기 위해 round 함수를 다시 호출하고, 비교한 모양이 세모라면 비긴 것이므로 D를 return 한다.
  5. 2) 다르면 개수가 더 많은 사람을 return 한다.
  6. 각 라운드별로 딱지놀이의 결과를 출력한다.

 

코드 및 설명
def round(maxShape):
    # 비교할 모양의 개수
    a_max_num, b_max_num = a[1:].count(maxShape), b[1:].count(maxShape)
    # 개수가 같으면
    if a_max_num == b_max_num:
        # 세모까지 개수가 같으면 비김
        if maxShape == 0:
            return 'D'
        # 다음으로 점수가 큰 모양 비교
        else:
            return round(maxShape - 1)

    # 개수가 다르면
    elif a_max_num > b_max_num:
        return 'A'
    else:
        return 'B'


roundNum = int(input())
for _ in range(roundNum):
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))

    # 낸 딱지 중에 점수가 제일 큰 모양
    maxA, maxB = max(a[1:]), max(b[1:])
    # 점수가 제일 큰 모양이 다를 때
    if maxA != maxB:
        if maxA > maxB:
            print('A')
        else:
            print('B')
    # 점수가 제일 큰 모양이 같을 때
    else:
        print(round(maxA))

BaekJoon 백준 14696 딱지놀이 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글