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
반응형
'Algorithm > 나머지 문제들' 카테고리의 다른 글
[프로그래머스 / Python] 배열 회전시키기 (2) | 2023.12.06 |
---|---|
[프로그래머스 / Python] 배열 만들기 5 (0) | 2023.12.06 |
[Baekjoon/JAVA] 백준 10813번 공 바꾸기 (0) | 2023.07.15 |
[Baekjoon/JAVA] 백준 14659번 한조서열정리하고옴ㅋㅋ (0) | 2023.06.30 |
[Baekjoon/JAVA] 백준 10811번 바구니 뒤집기 (0) | 2023.06.30 |