프로그래머스 1단계) 제일 작은 수 제거하기

2021. 12. 3. 14:05Algorithm/알고리즘

728x90
반응형

문제

첫시도

import Foundation

func solution(_ arr:[Int]) -> [Int] {
    var newArr = arr.sorted { return $0 > $1 }
    newArr.removeLast()
    if newArr.isEmpty {
        return [-1]
    } else {
        return newArr
    }
}

13:39-13:58

 

두번째 시도

func solution(_ arr:[Int]) -> [Int] {

    var arr2 = arr
    arr2.sorted(by: >)
    arr2.remove(at: arr2.endIndex-1)
    if arr2.count == 0 {
        return [-1]
    } else {
        return arr2
    }
}

결국통과

func solution(_ arr:[Int]) -> [Int] {

    var arr = arr
    arr.remove(at: arr.firstIndex(of: arr.min()!)!)
    return arr.count == 0 ? [-1] : arr

}

유의미한 답안

//Q9.제일 작은 수 제거하기
func solution(_ arr:[Int]) -> [Int] {
    var arr = arr
    arr.remove(at: arr.firstIndex(of : arr.min()!)!)
    return arr.count==0 ? [-1] : arr
}
/*arr에서 가장 작은 수를 제거하고
arr의 인덱스 개수가 0이면 [-1] 아니면 arr 리턴

다른 사람의 풀이
정렬해서 푼 사람도 있었다.
처음엔 간단하게 정렬로 구현할까 나도 생각했었지만
정렬을 하면 프로그래밍 언어에서 자체적으로 지원하는 정렬이
최악의 상황엔 n^2, 평균 n(logn)이기에
배열의 인덱스 개수가 만약 기하급수적으로 커지면 너무 비효울적이다.*/

 

 

 

 

느낀점

https://0urtrees.tistory.com/175

removeFirst()

removeLast()

isEmpty

 

[1,3,4,2] -> [3,4,2]

이렇게 나와야하는데

나는 4,3,2..

 

[1,3,4,2] [1,3,4,2] 

정렬을 이용할거라면 오른쪽배열 정렬 오름차순 정렬한다음 가장 왼쪽것을 왼쪽배열에서 지운것을 리턴....

 

728x90
반응형