티스토리 뷰

반응형

 

 

 

 

프로그래머스 제일작은수 제거하기 문제링크 ▼

 

코딩테스트 연습 - 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

programmers.co.kr

 

 


제일작은수 제거하기 문제설명

제일 작은 수 제거하기 문제는 [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
}

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함