적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 알고리즘] Programmers 제일 작은 수 제거하기

hongssup_ 2022. 1. 5. 00:36
반응형

제일 작은 수 제거하기

문제 설명
정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
단, 리턴하려는 배열이 빈 배열일 경우 배열에 -1을 넣어 리턴하세요.
제한 조건
- arr은 길이 1 이상인 배열
- 인덱스 i,j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 이다.
func solution(_ arr:[Int]) -> [Int] {
    var arr = arr
    arr.remove(at: arr.firstIndex(of: arr.min()!)!)
    return arr.isEmpty ? [-1] : arr
}

다른 사람의 풀이 보면 'index(of:)' 함수를 많이 썼던데, 현재는 deprecated 되었다고 한다. 

대신에 'firstIndex(of:)'를 써주는 것이 좋을듯!

firstIndex(of:)

: Returns the first index where the specified value appears in the collection.

func firstIndex(of element: Int) -> Int?

배열에서 해당 항목을 찾으면 처음으로 찾은 해당 항목의 index를 반환하고, 만약 해당 항목을 찾지 못하면 nil을 반환하는 함수. 

 

func solution(_ arr:[Int]) -> [Int] {
    let min = arr.sorted(by: <)[0]
     return arr.count == 1 ? [-1] : arr.compactMap({ return $0 != min ? $0 : nil })
}
728x90
반응형