Algorithm/나머지 문제들

[프로그래머스 / Python] 주사위 게임 3

양선규 2023. 12. 5. 23:54
728x90
반응형

문제

 

 

입출력 예

 

def solution(a, b, c, d) :
    
    origin = [a,b,c,d]
    so = list(set(origin))
    
    if len(so) == 1 : # 4개 전부 같을 때
        return origin[0] * 1111
    
    elif len(so) == 2 : # 3개가 같거나, 2개/2개 같을 때
        for i in origin :
            if origin.count(i) == 3 :
                p = i
                q = [x for x in origin if x != p][0]
                return (10 * p + q) ** 2
            elif origin.count(i) == 2 :
                p = i
                q = [x for x in origin if x != p][0]
                return (p + q) * abs(p - q)
            
    elif len(so) == 3 : # 2개가 같을 때
        for i in origin :
            if origin.count(i) == 2 :
                p = i
                q = [x for x in origin if x != p][0]
                r = [x for x in origin if x != p][1]
                return q * r
            
    else : # 전부 다를 때
        return min(origin)

 

정답 코드

 

a, b, c, d를 set 컬렉션으로 만들어 중복 요소를 제거한 후 리스트화 시켰다.

이렇게 하면 리스트의 길이를 보고 몇 개의 숫자가 중복되었는지를 알 수 있다.

 

길이 4 : 모든 요소가 다르다

길이 3 : 2개 요소가 같다

길이 2 : 3개 요소가 같거나, 2개/2개 요소가 같다

길이 1 : 모든 요소가 같다

 

이것을 전제로 조건문을 만들었다.

우선 다수개 있는 요소를 파악한 후, 해당 요소를 제외한 리스트를 만들어 나머지 요소를 구했다.

그리고 문제에 제시된 점수계산 공식을 이용하여 값을 return하였다.

728x90
반응형