새싹일지

주사위 게임 3 이거모임

gamnyam 2024. 7. 2. 12:10

 

def solution(a,b,c,d):
    counts = {}
    for num in [a,b,c,d]:
        if num in counts:
            counts[num] +=1
        else :
            counts[num] = 1

    values = list(counts.keys())
    freqs = list(counts.values())

    if len(values) == 1:
        p = values[0]
        return 1111 * p
        
    if 3 in freqs:
        p = values[freqs.index(3)]
        q = values[freqs.index(1)]
        return (10*p+q) ** 2

    if freqs.count(2) == 2:
        p = values[0]
        q = values[1]
        return (p + q) * abs(p - q)
    

    if 2 in freqs and freqs.count(1) == 2:
        p = values[freqs.index(2)]
        q = values[freqs.index(1)]
        r = values[freqs.index(1, freqs.index(1) + 1)]
        return q*r

    if len(values)==4:
        return min(values)
 
if 3 in freqs:
    p = values[freqs.index(3)]
    q = values[freqs.index(1)]
    return (10 * p + q) ** 2

단계별 설명

  1. 조건 확인:
    • if 3 in freqs:: freqs 리스트에 숫자 3이 포함되어 있는지 확인합니다.
    • 이 조건은 세 개의 주사위가 같은 숫자를 가지고 있음을 의미합니다.
  2. 값 추출:
    • p = values[freqs.index(3)]: freqs 리스트에서 값이 3인 인덱스를 찾아 values 리스트에서 해당 위치의 숫자를 p로 설정합니다.
      • 여기서 values 리스트는 주사위 숫자들의 리스트입니다.
    • q = values[freqs.index(1)]: freqs 리스트에서 값이 1인 인덱스를 찾아 values 리스트에서 해당 위치의 숫자를 q로 설정합니다.
      • 1은 나머지 하나의 주사위 숫자를 의미합니다.
  3. 점수 계산:
    • return (10 * p + q) ** 2: 주어진 점수 계산 공식에 따라 점수를 계산하여 반환합니다.
      • 주사위가 세 개가 같은 숫자(p)를 가지고 있고, 나머지 하나가 다른 숫자(q)를 가질 때 점수를 계산합니다.
      • 10 * p + q의 값에 제곱을 취한 결과가 반환됩니다.

예시

주사위 숫자가 2, 2, 2, 3인 경우를 예로 들어보겠습니다.

  1. 주사위 숫자:
    • a = 2, b = 2, c = 2, d = 3
  2. 빈도 계산:
    • counts = {2: 3, 3: 1}
  3. values와 freqs:
    • values = [2, 3]
    • freqs = [3, 1]
  4. 조건 확인:
    • 3 in freqs는 참이므로 다음 단계 진행.
  5. 값 추출:
    • p = values[freqs.index(3)] → p = values[0] → p = 2
    • q = values[freqs.index(1)] → q = values[1] → q = 3

'새싹일지' 카테고리의 다른 글

0703 새싹일지  (0) 2024.07.03
0702 새싹일지  (0) 2024.07.02
정수를 나선형으로 배치하기 모임  (0) 2024.07.02
0701 새싹일지  (0) 2024.07.01
0328 새싹일지  (0) 2024.06.28