코딩테스트

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

유정주 2022. 2. 27. 12:55
반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 프로그래머스 - 제일 작은 수 제거하기 문제를 풀었습니다.

 


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

    https://programmers.co.kr/learn/courses/30/lessons/12935

     

    코딩테스트 연습 - 제일 작은 수 제거하기

    정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

    programmers.co.kr

     


    풀이

    해당 문제에는 작은 함정이 있습니다.

    바로 문제 자체에는 배열이 정렬되어 있다는 조건이 없지만 정렬된 예시를 주어짐으로써 착각을 일으키는 건데요.

    예시를 통해 문제를 지레짐작하는 습관을 가진 사람들에게 아주 치명적인 함정일 것입니다.

     

    또 하나 중요한 점은 가장 작은 수를 "모두" 제거해야 한다는 점입니다.

    여러 개의 가장 작은 수가 들어올 수 있으니 이 점도 주의해야 합니다.

     

    저도 왜 틀리지 하면서 꽤 오래 고민을 했네요..

    정렬을 하지 않고 가장 작은 정수를 삭제하면 통과할 수 있습니다.


    전체 코드

    import Foundation
    
    func solution(_ arr:[Int]) -> [Int] {
        let minNum = arr.min()
        
        let result = arr.filter { $0 != minNum }
        
        return result.isEmpty ? [-1] : result
    }
    
    let arr = [1, 2, 3]
    print(solution(arr))

    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

     

    반응형