단, 최솟값을 찾기 위해 인접한 두 인덱스를 비교하기 해야 하기 떄문에, 인덱스의 범위 설정에 주의를 기울여야 한다.
(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
}
댓글