본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 제일 작은 수 제거하기

 

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

 

 

내 풀이

func solution(_ arr:[Int]) -> [Int] {
    
    if arr.count == 1 {
        return [-1]
    }
    
    var min = arr.min()!
    var answer = arr.filter{$0 > min}
    
    
    return answer
}

 

 

- 주어진 배열 arr의 길이가 1인 경우에 대한 예외 처리 수행

   만약 arr의 길이가 1이라면 배열에 -1을 채워서 반환

- 배열 arr의 길이가 1이 아닐 경우, 배열 arr에서 min() 함수를 사용해 가장 작은 값을 찾기.

- 여기서 arr.min()은 배열에서 가장 작은 값을 리턴하며, 옵셔널 타입이므로 강제 언래핑(!)을 통해 실제 값에 접근

- 배열 arr에서 가장 작은 수를 제거하기 위해 filter 메서드 사용

- filter 메서드는 조건을 만족하는 요소만을 걸러내어 새로운 배열로 반환

  주어진 배열 arr에서 가장 작은 수보다 큰 수만을 남기고 새로운 배열 생성

- 필터링된 배열 반환

 

 

위 코드로도 정답 처리가 되었지만 뭔가 아쉬워 예외처리 부분을 수정 배열이 비어있는 경우를 추가해보았다. 

func solution(_ arr: [Int]) -> [Int] {
    // 배열이 비어 있는 경우
    guard !arr.isEmpty else {
        return [-1]
    }
    
    // 배열이 하나의 요소만을 가지고 있는 경우
    guard arr.count > 1 else {
        return [-1]
    }
    
    // 배열에서 최소값 찾기
    let minVal = arr.min()!
    
    // 최소값을 제외한 새로운 배열 생성
    let result = arr.filter { $0 != minVal }
    
    return result
}

 

 

 

min()함수란?

     배열의 요소 중 가장 작은 값을 반환

     배열이 비어있을 경우에는 nil을 반환하며, 반환 타입은 옵셔널

     예를 들어, [3, 1, 4, 2]라는 배열이 주어졌을 때, min() 함수 호출 시 1이 반환

 

 

filter메서드란?

    배열의 각 요소에 대해 주어진 조건을 만족하는 요소들로 이루어진 새로운 배열 반환

    클로저를 인자로 받으며, 클로저의 반환값이 true인 경우에만 해당 요소가 결과 배열에 포함

 

예시    

짝수만을 걸러내는 코드

let arr = [1, 2, 3, 4, 5]
let evenNumbers = arr.filter { $0 % 2 == 0 }
// 결과: [2, 4]

 

 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31