문제
풀이
- 문제의 조건이 굉장히 많기 때문에 색깔 별, 숫자 별로 구별해서 생각함.
- Counter 함수를 통해 색깔의 동일 여부를 파악함.
- 숫자의 동일 여부 또한 Counter 함수를 사용한 후, items 함수를 사용하고 items가 return한 값을 sort함수와 lambda식을 통해 정렬함.
- 조건에 맞게 구분해줌.
코드
from collections import Counter
def solution() :
colors = []
numbers = []
for _ in range(5) :
color, number = input().split()
colors.append(color)
numbers.append(int(number))
color_check = sorted(list(Counter(colors).values()))
number_check = sorted(list(Counter(numbers).items()), key = lambda x : (-x[1], -x[0]))
if color_check == [5] :
if sorted(numbers, reverse = True) == sorted(numbers)[::-1] and (sorted(numbers)[0] + sorted(numbers)[-1]) / 2 == sorted(numbers)[2] :
return max(numbers) + 900
else :
return max(numbers) + 600
else :
if number_check[0][1] == 4 :
return number_check[0][0] + 800
elif number_check[0][1] == 3 :
if number_check[1][1] == 2 :
return (number_check[0][0] * 10) + number_check[1][0] + 700
else :
return number_check[0][0] + 400
elif number_check[0][1] == 2 :
if number_check[1][1] == 2 :
return (number_check[0][0] * 10) + number_check[1][0] + 300
else :
return number_check[0][0] + 200
elif sorted(numbers, reverse = True) == sorted(numbers)[::-1] and (sorted(numbers)[0] + sorted(numbers)[-1]) / 2 == sorted(numbers)[2] :
return max(numbers) + 500
else :
return max(numbers) + 100
print(solution())