알고리즘

[프로그래머스, 파이썬] 주사위 게임 3

hminor 2024. 2. 21. 10:25

풀이

  • 딕셔너리를 활용해서 카운팅을 했는데
  • 차라리 배열로 풀었다면 좀 더 간결한 코드가 될 듯 싶다.
  • 그래서 딕셔너리의 키와 값들만 가지는 배열을 다시 만들어
  • 하나씩 조건문을 활용하여 해결

 

def solution(a, b, c, d):
    dic = {}
    result = 0
    for i in [a,b,c,d]:
        if dic.get(i): dic[i] += 1
        else: dic[i] = 1
    dic_values = list(dic.values())
    dic_keys = list(dic.keys())
    if len(dic_values) == 1: result = dic_keys[0]*1111
    elif len(dic_values) == 2:
        if max(dic_values) == 3:
            p_idx = dic_values.index(3)
            p_val = dic_keys.pop(p_idx)
            result = (10*p_val+dic_keys[0])**2
        else: result = (dic_keys[0]+dic_keys[1])*abs(dic_keys[0]-dic_keys[1])
    elif len(dic_values) == 3:
        idx = dic_values.index(2)
        dic_keys.pop(idx)
        result = dic_keys[0]*dic_keys[1]
    else: result = min(dic_keys)
    return result