Where who wants to meet someone
배열 비교하기 본문
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
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
배열의 길이에 따라 다른 연산하기 (0) | 2024.01.30 |
---|---|
부분 문자열인지 확인하기 (0) | 2024.01.30 |
뒤에서 5등 위로 (0) | 2024.01.30 |
배열의 원소만큼 추가하기 (0) | 2024.01.30 |
조건에 맞게 수열 변환하기 3 (0) | 2024.01.30 |