티스토리 뷰
프로그래머스 제일작은수 제거하기 문제링크 ▼
제일작은수 제거하기 문제설명
제일 작은 수 제거하기 문제는 [Int] 타입의 정수형 배열이 주어졌을때 가장 작은 수를 제외한 배열을 배열 순서를 유지한채 반환하는 문제입니다. 만약 가장 작은 수를 제외했는데 빈 배열일 경우, [-1] 을 반환해야한 다는 점을 유의해서 문제를 풀면 되겠습니다.
이번에는 swift언어의 Array에서 접근할 수 있는 filter, min, isEmpty등의 기능을 활용해서 제일작은수 제거하기 문제를 풀어보겠습니다.
문제 내용은 간단하니, 문제의 제한조건 등은 위 링크 통해서 확인하시기 바랍니다.
제일작은수 제거하기 swift 문제풀이
filter, min, isEmpty 활용하기
본 문제는 위의 코드 단 3줄로 해결할 수 있었습니다.
2행) 배열의 min()함수를 통해 먼저 최솟값을 구해줍니다. min() 메서드의 반환값은 Int?형이지만, arr의 최소 사이즈는 1이상임이 보장되므로, 강제언래핑으로 Int값으로 벗겨내어 mv에 저장합니다.
3행) 앞서 구한 최솟값, mv가 아닌 값들만 필터링해서 result에 저장하고 있습니다. 이때 arr의 최솟값을 제외한 값들의 순서는 유지됩니다.
filter는 특정 조건을 충족(true)하는 값들만 필터링하여 남기는 배열을 반환합니다.
4행) 이제 result는 최솟값이 제거된 배열이 존재합니다. 만약 배열이 비어있을 경우, [-1]을 / 비어있지 않으면 result 배열을 그대로 반환하면 됩니다. 삼항연산자를 통해 한줄로 이러한 조건식을 표현할 수 있습니다.
isEmpty를 사용해서 O(1)의 복잡도로 배열이 비어있는지 확인 할 수 있습니다.
이렇게 swift언어의 fillter, min, isEmpty 등을 활용해서 간단한 문제, 제일작은수 제거하기를 풀어봤습니다.
swift언어로 코드 작성 후, 최종 제출 결과 & 전체 swift 코드는 아래와 같습니다.
func solution(_ arr: [Int]) -> [Int] {
let mv = arr.min()!
let result = arr.filter { $0 != mv }
return result.isEmpty ? [-1] : result
}
'알고리즘 정보 > Swift 알고리즘' 카테고리의 다른 글
swift언어 프로그래머스 문자열예제, 이상한문자 만들기 풀이 (0) | 2021.02.19 |
---|---|
swift 코딩테스트 기초, 최솟값만들기 계수정렬 풀이 (1) | 2021.02.18 |
스위프트 reduce 기초예제, 프로그래머스 평균구하기 풀이 (0) | 2021.02.16 |
swift reduce 기초예제, 프로그래머스 레벨1 내적 풀이 (0) | 2021.02.15 |
스위프트 DFS 백트래킹 예제, 백준 10974 모든순열 풀이 (0) | 2021.02.14 |
- Total
- Today
- Yesterday
- swift 기초
- swift 문자열
- swift reduce
- publisher
- swift
- Protocol
- swift알고리즘
- 스위프트
- 프로토콜
- 프로그래머스swift
- createML
- ios
- 부스트코스
- swift string
- 프로그래머스
- Swift 알고리즘
- 개발자문서
- swift언어
- uikit
- CoreML
- 자연어처리
- 김프매매
- 컬렉션
- 알고리즘문제
- 알고리즘
- Collection
- 백준알고리즘
- 백준swift
- SwiftUI
- swift문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |