코딩테스트 & 문제 풀이

[Python]백준_14696 : 딱지놀이

Hicecream 2023. 11. 5. 00:16

2022년 12월 10일에 작성됨

 

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

 

14696번: 딱지놀이

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 딱지놀이의 총 라운드 수를 나타내는 자연수 N이 주어진다. N 은 1 이상 1,000 이하이다. 다음 줄에는 라운드 1에서 어린이 A가 내는 딱지에 나

www.acmicpc.net

 

 

문제 분석

4, 3, 2, 1이 각각 몇 번 입력되었는지 세어주고, 세어준 값을 순서대로 비교하여 결과에 따라 A, B, D 중 하나로 출력해준다.

 

 

소스 코드 (⭕)

N = int(input())
hi = []

# 총 라운드 수 N만큼 반복
for i in range(N):
    # A와 B를 map함수를 써서 int형, 공백 기준, 맨 앞 숫자 재외하고 입력 받기
    A = list(map(int, input().split()))[1:]
    B = list(map(int, input().split()))[1:]

    # 별4, 동그라미3, 네모2, 세모1 이므로 각각 들어있는 개수를 세어 리스트에 넣음
    list_A = [A.count(4), A.count(3), A.count(2), A.count(1)]
    list_B = [B.count(4), B.count(3), B.count(2), B.count(1)]

    # list의 인덱스 만큼 0에서 3까지 반복해서 더 큰 값인 승자를 hi 리스트에 추가
    for j in range(0, 4):               
        if (list_A[j] > list_B[j]):
            hi.append("A")
            break
        elif (list_A[j] < list_B[j]):
            hi.append("B")
            break
        elif j == 3:
            hi.append("D")
            break
    # 인덱스가 0부터 2까지 반복하고도 3에서도 마지막까지 크기가 같으면
    # 이 라운드의 A와 B의 승패는 무승부로 D를 hi 리스트에 추가해준다

for k in hi:
    print(k)             # hi 리스트 안에 있는 k 출력

 

코드 분석

별, 동그라미, 네모, 세모는 각각 4, 3, 2, 1이다.

두 어린이 A와 B의 리스트를 만들어 한 라운드에 4, 3, 2, 1이 몇 개인지 세어주고 리스트에 차례대로 넣는다.

A와 B의 리스트의 구성은 아래와 같이 되어있다.

인덱스 0 : 별(4)의 개수

인덱스 1: 동그라미(3)의 개수

인덱스 2: 네모(2)의 개수

인덱스 3: 세모(1)의 개수

별, 동그라미, 네모, 세모 순으로 승패의 우선순위를 갖기 때문에

for문으로 인덱스 0부터 3까지 요소 값을 비교해보고, 큰 값의 어린이를 승으로 하여 hi 리스트에 추가한다.

만약 별, 동그라미, 네모, 세모까지 개수가 모두 같으면, D를 추가한다.

(인덱스가 3까지 와서도 A, B 리스트의 값이 같다면 D를 추가하는거니까 j==3인 경우만 해당)

 

 

 

end

리스트와 count 함수로 쉽게 풀 수 있었다!