def solution(arr1, arr2):
answer = 0
a1 = len(arr1)
a2 = len(arr2)
if a1 > a2:
answer = 1
elif a1 < a2:
answer = -1
else:
answer = 0
if (a1 == a2):
if sum(arr1) > sum(arr2):
answer = 1
elif sum(arr1) < sum(arr2):
answer = -1
else:
answer = 0
return answer
<aside> 💡
음.. 각 조건에 맞게 전부 값을 넣긴 했지만… 해당 조건에 사용되는 결과 값은 조건마다 모두 동일하다.. 이를 어떻게 리팩토링 할 수 있을까?
</aside>
네, 지금 풀이도 충분히 맞지만 조건문이 중복돼서 조금 장황해 보일 수 있어요 🙂
이 문제는 "길이 먼저 비교, 같으면 합 비교" 라는 규칙만 잘 담아주면 됩니다.
def solution(arr1, arr2):
if len(arr1) != len(arr2):
return 1 if len(arr1) > len(arr2) else -1
if sum(arr1) != sum(arr2):
return 1 if sum(arr1) > sum(arr2) else -1
return 0
파이썬에서는 튜플 비교 시 앞에서부터 차례대로 비교해요.
이걸 이용하면 길이, 합을 한 번에 비교할 수 있습니다.
def solution(arr1, arr2):
key1 = (len(arr1), sum(arr1))
key2 = (len(arr2), sum(arr2))
if key1 > key2:
return 1
if key1 < key2:
return -1
return 0