본문 바로가기

코딩테스트

프로그래머스 주사위 게임 3 level0 python

 

우선 문제를 보고 겹치는 주사위의 개수가 기준으로 케이스 분류를 해야된다고 생각했다.

def solution(a, b, c, d):
    answer = [a,b,c,d]
    result = 0
    chaek = []
    answer_set = list(set(answer))
    if len(answer_set) == 1:
        result = answer_set[0] *1111
    elif len(answer_set) == 2:
        for i in range(len(answer_set)):
            chaek.append(str(answer).count(str(answer_set[i])))
        if (chaek[0] == chaek[1]):
            result = (answer_set[0] +answer_set[1]) * abs(answer_set[0]-answer_set[1])
        else:
            if (chaek[0] < chaek[1]):
                result = ((answer_set[1]*10+answer_set[0])**2)
            else:
                result = ((answer_set[0]*10+answer_set[1])**2)
    elif len(answer_set) == 3:
        for i in range(len(answer_set)):
            chaek.append(str(answer).count(str(answer_set[i])))
        if (chaek[0] == 2):
            result = answer_set[1] *answer_set[2]
        elif (chaek[1] == 2):
            result = answer_set[0] *answer_set[2]
        else:
            result = answer_set[0] *answer_set[1]
    else:
        result = min(answer)

    return result

a,b,c,d,를 list에 넣은다음 set으로 변환시켜 set의 길이가 1,2,3,4일떄로 케이스를 나누었다.

하지만 set의 길이가 2일때 겹치는 경우가 있어서 케이스 분류를 다시해줬다.

set의 길이가 1일때는 1111*answer_set[0]

길이가 2일때는 중독된 숫자가 3,1일경우 2,2일 경우로 나누었다.

길이가 3일때는 가장 많이 나온 숫자를 찾아야했다. set에서 count를 사용해서 answer list에 들어있는 개수를 찾았다.

마지막으로 길이가 4일때는 최소값을 찾으면 된다.