알고리즘 문제를 풀면 풀수록 느끼는거지만, 딕셔너리나 리스트에 대한 개념이 확실히 있어야
좀 더 빠르고 쉽게 문제를 풀이 할 수 있는 것 같다...
+ 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 |