문제
제일 작은 수 제거하기
문제파악하기
- 배열의 최솟값을 구한다
- 최솟값의 인덱스를 구한다
- 그 인덱스를 삭제하고 반환한다
풀이
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 })
}
- 제일 구현하고 싶던 코드.. 머리로는 되는데 손으로는 안된다.
내가 풀어서 나온 점수중에 제일 높다 (뿌듯...