Where who wants to meet someone

배열 비교하기 본문

프로그래머스 알고리즘 문제 기록/코딩 기초 트레이닝

배열 비교하기

Lust3r 2024. 1. 30. 13:51
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181856

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

import Foundation

func solution(_ arr1:[Int], _ arr2:[Int]) -> Int {
    if arr1.count > arr2.count {
        return 1
    } else if arr1.count < arr2.count {
        return -1
    } else {
        return arr1.reduce(0, +) > arr2.reduce(0, +) ? 1 : (arr1.reduce(0, +) < arr2.reduce(0, +) ? -1 : 0)
    }
}

- 조건이 다양해서 if문으로 나눠서 처리

- count가 어디가 큰지에 따라 1과 -1을 if..else를 통해 return해주고, 그 외의 경우는 둘의 count가 같은 경우

- count가 같을 때, reduce 메서드를 사용하여 삼항연산자로 분기처리 후 반환

 

// 풀이 1

import Foundation

func solution(_ arr1:[Int], _ arr2:[Int]) -> Int {
    let arr1Count = arr1.count
    let arr2Count = arr2.count

    switch (arr1Count, arr2Count) {
        case (let x, let y) where x > y:
        return 1
        case (let x, let y) where x < y:
        return -1
        case (let x, let y) where arr1.reduce(0, +) > arr2.reduce(0, +):
        return 1
        case (let x, let y) where arr1.reduce(0, +) < arr2.reduce(0, +):
        return -1
        default:
        return 0
    }
}

// 풀이 2

import Foundation

func solution(_ arr1:[Int], _ arr2:[Int]) -> Int {
    if arr1.count == arr2.count {
        let sum1 = arr1.reduce(0, +), sum2 = arr2.reduce(0, +)
        return sum1 == sum2 ? 0 : sum1 > sum2 ? 1 : -1
    }
    return arr1.count > arr2.count ? 1 : -1  
}

 

 

점수: +3