카테고리 없음

[Swift] Lv.1 제일 작은 수 제거하기

iOSDEv 2024. 3. 2. 10:16
제일 작은 수 제거하기

 

문제

 

나의 풀이
func solution(_ arr:[Int]) -> [Int] {
     if arr.count == 1 { return [-1] }
    
    var result = arr.sorted(by: <)[0]
    
    return arr.filter { $0 > result }
}

 

다른 사람의 풀이
func solution(_ arr:[Int]) -> [Int] {
    
    let minArr = arr.sorted().first
    
    return arr.count == 1 ? [-1] : arr.compactMap({ return $0 != minArr ? $0 : nil })
}

 

제일 작은 수를 변수에 저장하고

배열의 수가 1이면 [-1]의 배열을 반환하고 배열의 길이가 1보다 큰 배열일 때 compact고차함수를 사용하여 작은수와 다른것만 반환하고

아닌 경우엔 nil로 반환시킨다 

nil로 반환하는 이유는?

compactmap은 기본적으로 nil이 있는 배열은 제거해서 반환해주기 때문이다

 

func solution(_ arr:[Int]) -> [Int] {
    var answer = arr
    //제일 작은 값을 찾아서 제거함
    answer.remove(at:
    answer.index(of:answer.sorted { $0 < $1 }[0])!) // 정렬된 배열에서 제일 작은 값의 인덱스를 찾음 
    
    return answer.isEmpty ? [-1] : answer
}

 

배열의에 인덱스를 제거한다

 

// 주어진 정수 배열을 처리하는 함수
func solution(_ arr: [Int]) -> [Int] {
    // 1. 배열의 길이가 1인 경우, 최소값을 찾을 수 없으므로 [-1]을 반환
    if arr.count == 1 {
        return [-1]
    }

    // 2. 배열 내 최솟값을 찾아 변수에 저장 (강제 언래핑을 통해 값이 항상 존재한다고 가정)
    var min = arr.min()!

    // 3. 최솟값보다 큰 원소들로 이루어진 새로운 배열 생성
    var answer = arr.filter { $0 > min }

    // 4. 최종적으로 새로운 배열 반환
    return answer
}
 

프로그래머스

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

programmers.co.kr