처음 코드

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

더 파이썬스럽게 (tuple 비교 활용)

파이썬에서는 튜플 비교 시 앞에서부터 차례대로 비교해요.

이걸 이용하면 길이, 합을 한 번에 비교할 수 있습니다.

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

실행 예시