우선 문제를 보고 겹치는 주사위의 개수가 기준으로 케이스 분류를 해야된다고 생각했다.
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일때는 최소값을 찾으면 된다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 겹치는 선분의 길이 level0 python (0) | 2024.07.20 |
---|---|
프로그래머스 ox 퀴즈 level0 python (0) | 2024.07.18 |
프로그래머스 level0 캐릭터의 좌표 (0) | 2024.07.15 |
프로그래머스 level0 숨어있는 숫자의 덧셈 (2) (0) | 2024.07.14 |
무작위로 K개의 수 뽑기 level 0 (0) | 2024.07.11 |