def solution(a, b, c, d):
if a == b == c == d:
return 1111 * a
dice_list = [a, b, c, d]
dice_set = set(dice_list)
for number in dice_set:
dice_list.remove(number)
if len(dice_list) == 1:
dice_set.remove(dice_list[0])
return dice_set.pop() * dice_set.pop()
if len(dice_list) == 2:
if dice_list[0] == dice_list[1]:
dice_set.remove(dice_list[0])
return (10 * dice_list[0] + dice_set.pop()) ** 2
return (dice_list[0] + dice_list[1]) * abs(dice_list[0] - dice_list[1])
return min(a, b, c, d)
1) 모두 같은 경우는 early return
2) set을 만들어서 set을 순회하며 list의 요소를 제거한다.
3) list의 길이가 1인 경우는 주사위가 2/1/1 의 경우니까 list에 남아있는 마지막 요소를 set에서 삭제하면 남은 1/1 의 두 개의 숫자를 얻을 수 있다.
4) list의 길이가 2인 경우는 두 가지로 나눠진다.
5) 마지막엔 1/1/1/1 로 모두 다른 경우라 min을 써서 최솟값을 구한다.