알고리즘 공부/파이썬(Python)

백준 14696번 딱지놀이 파이썬

마달랭 2024. 6. 26. 22:13
반응형

리뷰

푸는 방법은 많겠지만 나는 시간복잡도의 이점을 활용하기 위해 딕셔너리를 활용했다.

문제 풀이

  1. 각 라운드가 진행될 때마다 1~4의 키값을 가진 a, b 딕셔너리를 각각 초기화 해준다.
  2. 리스트내 값을 딕셔너리 value에 더해준다.
  3. winner 변수를 초기화 해주고 -1일 경우 무승부 0일 경우 a승리 1일 경우 b승리로 사용할 것이다.
  4. 별이 가장 좋은 딱지이므로 4부터 시작하여 1까지 내림차순으로 value 값을 비교해 준다.
  5. winner 변수 값에 알맞게 승자 혹은 무승부를 출력해 준다.

참고 사항

리스트에서 딕셔너리로 값을 전달할때 리스트의 맨 앞 숫자는 딱지의 개수를 나타내므로 전달해 주지 않아야 한다.

정답 코드

def q14696():
    # 백준 14696번 딱지놀이 파이썬
    n = int(input())
    for _ in range(n):
        a = {4: 0, 3: 0, 2: 0, 1: 0}
        b = {4: 0, 3: 0, 2: 0, 1: 0}
        lst1 = list(map(int, input().split()))
        lst2 = list(map(int, input().split()))
        for i in range(1, lst1[0] + 1):
            a[lst1[i]] += 1
        for i in range(1, lst2[0] + 1):
            b[lst2[i]] += 1
        winner = -1
        for i in range(4, 0, -1):
            if a[i] > b[i]:
                winner = 0
                break
            if a[i] < b[i]:
                winner = 1
                break
        print('A' if winner == 0 else 'B' if winner == 1 else 'D')
q14696()

 

728x90
반응형