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
단계별 설명
- 조건 확인:
- if 3 in freqs:: freqs 리스트에 숫자 3이 포함되어 있는지 확인합니다.
- 이 조건은 세 개의 주사위가 같은 숫자를 가지고 있음을 의미합니다.
- 값 추출:
- p = values[freqs.index(3)]: freqs 리스트에서 값이 3인 인덱스를 찾아 values 리스트에서 해당 위치의 숫자를 p로 설정합니다.
- 여기서 values 리스트는 주사위 숫자들의 리스트입니다.
- q = values[freqs.index(1)]: freqs 리스트에서 값이 1인 인덱스를 찾아 values 리스트에서 해당 위치의 숫자를 q로 설정합니다.
- 1은 나머지 하나의 주사위 숫자를 의미합니다.
- p = values[freqs.index(3)]: freqs 리스트에서 값이 3인 인덱스를 찾아 values 리스트에서 해당 위치의 숫자를 p로 설정합니다.
- 점수 계산:
- return (10 * p + q) ** 2: 주어진 점수 계산 공식에 따라 점수를 계산하여 반환합니다.
- 주사위가 세 개가 같은 숫자(p)를 가지고 있고, 나머지 하나가 다른 숫자(q)를 가질 때 점수를 계산합니다.
- 10 * p + q의 값에 제곱을 취한 결과가 반환됩니다.
- return (10 * p + q) ** 2: 주어진 점수 계산 공식에 따라 점수를 계산하여 반환합니다.
예시
주사위 숫자가 2, 2, 2, 3인 경우를 예로 들어보겠습니다.
- 주사위 숫자:
- a = 2, b = 2, c = 2, d = 3
- 빈도 계산:
- counts = {2: 3, 3: 1}
- values와 freqs:
- values = [2, 3]
- freqs = [3, 1]
- 조건 확인:
- 3 in freqs는 참이므로 다음 단계 진행.
- 값 추출:
- p = values[freqs.index(3)] → p = values[0] → p = 2
- q = values[freqs.index(1)] → q = values[1] → q = 3