본문 바로가기
코딩 테스트/프로그래머스

[프로그래머스] (Swift) 제일 작은 수 제거하기 - Lv.1

by Dev.Andy 2023. 4. 18.

📌 문제

코딩테스트 연습 - 제일 작은 수 제거하기 | 프로그래머스 스쿨

 

📌 풀이

(1) 반복문과 인덱스로 풀기

  • 반복문을 통해 인덱스를 접근하여 최솟값을 갱신해 나가면 된다.
  • 단, 최솟값을 찾기 위해 인접한 두 인덱스를 비교하기 해야 하기 떄문에, 인덱스의 범위 설정에 주의를 기울여야 한다.

(1) Swift 메서드 활용

  • Swift의 메서드를 활용하여 손쉽게 구할 수도 있다.
  • min()로 최솟값을 구하고 filter() 또는 removeAll()로 특정 조건을 만족시키도록 하면 된다.

 

📌 코드 1 - 반복문과 인덱스만으로 구하기

func solution(_ arr:[Int]) -> [Int] {
    // 배열의 길이가 1 이하일 경우 결괏값에 [-1] 할당
    if arr.count <= 1 {
        return [-1]
    }
    
    // 필요한 변수 초기화
    var min = arr[0]
    var result: [Int] = []
    
    // for 문을 돌면서 최솟값과 최솟값의 인덱스 할당
    for i in 1..<arr.count {
        if arr[i] < min {
            min = arr[i]
        }
    }
    
    // 배열에서 최솟값을 제외한 모든 값을 결괏값에 할당
    for num in arr {
        if num != min {
            result.append(num)
        }
    }
    
    // 결괏값 반환
    return result
}

 

📌 코드 2 - Swift removeAll() 활용

func solution(_ arr:[Int]) -> [Int] {
    // 배열의 길이가 1 이하일 경우 결괏값에 [-1] 할당
    if arr.count <= 1 {
        return [-1]
    }
    
    // 필요한 변수 할당
    let min = arr.min()!
    var result = arr

    // removeAll로 최솟값을 모두 제외하여 결괏값에 할당
    result.removeAll(where: { $0 == min })

    // 결괏값 반환
    return result
}

 

📌 코드 3 - Swift filter() 활용

func solution(_ arr:[Int]) -> [Int] {
    // 배열의 길이가 1 이하일 경우 결괏값에 [-1] 할당
    if arr.count <= 1 {
        return [-1]
    }
    
    // 필요한 변수 초기화
    let min = arr.min()!
    var result = arr

    // filter로 최솟값이 아닌 것을 결괏값에 할당
    result = arr.filter { $0 != min }

    // 결괏값 반환
    return result
}

댓글