Algorithm/나머지 문제들
[프로그래머스 / Python] 주사위 게임 3
양선규
2023. 12. 5. 23:54
728x90
반응형
def solution(a, b, c, d) :
origin = [a,b,c,d]
so = list(set(origin))
if len(so) == 1 : # 4개 전부 같을 때
return origin[0] * 1111
elif len(so) == 2 : # 3개가 같거나, 2개/2개 같을 때
for i in origin :
if origin.count(i) == 3 :
p = i
q = [x for x in origin if x != p][0]
return (10 * p + q) ** 2
elif origin.count(i) == 2 :
p = i
q = [x for x in origin if x != p][0]
return (p + q) * abs(p - q)
elif len(so) == 3 : # 2개가 같을 때
for i in origin :
if origin.count(i) == 2 :
p = i
q = [x for x in origin if x != p][0]
r = [x for x in origin if x != p][1]
return q * r
else : # 전부 다를 때
return min(origin)
정답 코드
a, b, c, d를 set 컬렉션으로 만들어 중복 요소를 제거한 후 리스트화 시켰다.
이렇게 하면 리스트의 길이를 보고 몇 개의 숫자가 중복되었는지를 알 수 있다.
길이 4 : 모든 요소가 다르다
길이 3 : 2개 요소가 같다
길이 2 : 3개 요소가 같거나, 2개/2개 요소가 같다
길이 1 : 모든 요소가 같다
이것을 전제로 조건문을 만들었다.
우선 다수개 있는 요소를 파악한 후, 해당 요소를 제외한 리스트를 만들어 나머지 요소를 구했다.
그리고 문제에 제시된 점수계산 공식을 이용하여 값을 return하였다.
728x90
반응형