프로그래머스/기초

[프로그래머스] Lv.0 /주사위 게임 3 (파이썬/Python)

junslee 2025. 2. 18. 11:48

1. 문제 설명

2. 풀이 과정

네 주사위의 값을 정렬하여 쉽게 패턴을 분석한다.

다음과 같은 조건으로 설정한다.

네 숫자가 모두 같음: 정렬된 리스트에서 첫 번째와 마지막 값이 같으면 모든 숫자가 동일

세 숫자가 같음: 정렬된 리스트에서 앞의 세 개 또는 뒤의 세 개가 같으면 해당 조건을 만족

두 개씩 같은 값: 정렬된 리스트에서 앞의 두 개와 뒤의 두 개가 각각 같은 경우를 처리

두 개만 같음: 정렬된 리스트에서 중복된 숫자가 하나씩만 있는 경우를 처리

모두 다름: 위 조건에 해당하지 않으면 네 숫자가 모두 다른 경우

각 조건에 따라 문제에 제시한 공식대로 점수를 계산한다.

3. 코드

def solution(a, b, c, d):
    dice = sorted([a, b, c, d])
    
    # 네 주사위의 숫자를 리스트로 정렬
    if dice[0] == dice[3]:
        return 1111 * dice[0]
    
    # 네 숫자가 모두 같은 경우
    if dice[0] == dice[2] or dice[1] == dice[3]:
        p = dice[1]
        q = dice[0] if dice[0] != p else dice[3]
        return (10 * p + q) ** 2
    
    # 세 숫자가 같고 나머지 하나가 다른 경우
    if dice[0] == dice[1] and dice[2] == dice[3]:
        p = dice[0]
        q = dice[2]
        return (p + q) * abs(p - q)
    
    # 두 개씩 같은 값이 나온 경우
    if dice[0] == dice[1]:
        return dice[2] * dice[3]
    elif dice[1] == dice[2]:
        return dice[0] * dice[3]
    elif dice[2] == dice[3]:
        return dice[0] * dice[1]
    
    # 네 숫자가 모두 다른 경우
    return dice[0]