7. 주사위 게임

알고리즘 문제를 풀면 풀수록 느끼는거지만, 딕셔너리나 리스트에 대한 개념이 확실히 있어야

좀 더 빠르고 쉽게 문제를 풀이 할 수 있는 것 같다...

 

+ lambda 함수도 자유자재로 사용할 줄 알면 좋을듯!

 

지난 번 이용한 dictionary 에서의 try, except 구문을 이용해 같은 수의 주사위가 몇번 반복되는지를 딕셔너리를 이용하여 찾았고, 

이를 바탕으로 3개 다 맞은 경우, 2개만 맞은 경우, 1개만 맞은 경우의 수를 찾아 점수를 계산하는 알고리즘을 작성해보았다.

n = int(input())
num_dict = {}

for i in range(n):
    num = list(map(int, input().split()))
    res = {}
    for j in num :
        try : res[j] += 1
        except : res[j] = 1

    # key value를 호출 할 때 value를 기준으로 호출하는게 많다면 딕셔너리를 뒤집자.
    res_res = {v:k for k, v in res.items()}

    a = res_res.get(3)
    b = res_res.get(2)
    c = res_res.get(1)
    
    if a != None : 
        prize = 10000 + (a*1000)
        # print(f"3개다 맞춘경우? : {prize}" )
    elif b != None :
        prize = 1000 + (b*100)
        # print(f"2개다 맞춘경우? : {prize}" )
    elif c!= None : 
        num.sort(reverse=True)
        prize = num[0] * 100
        # print(f"1개다 맞춘경우? : {prize}" )

    num_dict[i+1] = prize

num_dict = sorted(num_dict.items(), reverse = True, key = lambda item : item[1])
print(num_dict[0][1])

 

 

'알고리즘과 자료구조 > 매일매일 알고리즘' 카테고리의 다른 글

9. 회문 문자열  (0) 2024.01.04
8. 점수 계산하기  (0) 2024.01.04
6. 뒤집은 소수 구하기  (1) 2024.01.04
5. 소수 구하기(에라토스테네스 체)  (1) 2023.12.22
4. 자릿수의 합  (0) 2023.12.22