📌 문제
📌 풀이
(1) 반복문과 인덱스로 풀기
- 반복문을 통해 인덱스를 접근하여 최솟값을 갱신해 나가면 된다.
- 단, 최솟값을 찾기 위해 인접한 두 인덱스를 비교하기 해야 하기 떄문에, 인덱스의 범위 설정에 주의를 기울여야 한다.
(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
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (Swift) JadenCase 문자열 만들기 - Lv.2 (0) | 2023.04.25 |
---|---|
[프로그래머스] (Swift) 문자열 내림차순으로 배치하기 - Lv.1 (0) | 2023.04.20 |
프로그래머스) signal: illegal instruction (core dumped) 원인과 해결 (Swift 오류) (0) | 2023.04.14 |
[프로그래머스] (Swift) 정수 제곱근 판별 - Lv.1 (0) | 2023.04.03 |
프로그래머스) 분수의 덧셈 (Swift) (0) | 2023.03.27 |
댓글