코딩테스트
프로그래머스 주사위 게임 3 level0 python
choyou831
2024. 7. 17. 18:55
우선 문제를 보고 겹치는 주사위의 개수가 기준으로 케이스 분류를 해야된다고 생각했다.
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일때는 최소값을 찾으면 된다.