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

doyeonjeong_·2022년 7월 19일
0

프로그래머스

목록 보기
4/35

문제

제일 작은 수 제거하기

문제파악하기

  1. 배열의 최솟값을 구한다
  2. 최솟값의 인덱스를 구한다
  3. 그 인덱스를 삭제하고 반환한다

풀이


// 제일 작은 수 제거하기 : 8점!
func solution(_ arr:[Int]) -> [Int] {
    var array = arr
    if arr.count == 1 {
        return [-1]
    } else {
        let min: Int = arr.min()! // 최솟값
        let minIndex: Int = arr.firstIndex(of: min)! // 최솟값의 인덱스
        array.remove(at: minIndex)
    }
    return array
}

FEEDBACK

배운 점

  • remove(at: index) : 배열의 해당 인덱스 값을 지운다
  • array.min()! : 배열의 최솟값을 반환한다
  • arr.firstIndex(of: value) : 배열을 왼쪽부터 탐색하여 처음 만난 value의 인덱스를 반환한다

개선할 점

  • 중간에 시간복잡도가 좀 긴게 하나 있었던 것 같은데.. 더 줄일 수 없나?
  • 삼항연산자를 배워야겠다.

다른 풀이


func solution(_ arr:[Int]) -> [Int] {
    let min = arr.sorted(by: <)[0]
     return arr.count == 1 ? [-1] : arr.compactMap({ return $0 != min ? $0 : nil })
}
  • 제일 구현하고 싶던 코드.. 머리로는 되는데 손으로는 안된다.

내가 풀어서 나온 점수중에 제일 높다 (뿌듯...

profile
블로그 이사중 🚚 byukbyak.tistory.com

0개의 댓글