본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 29. 제일 작은 수 제거하기

by 솔비님 2024. 7. 24.

 

1. 문제 설명 (📎Link)

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

 

2. 제한사항

arr은 길이 1 이상인 배열입니다.

인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.


📝 문제

func solution(_ arr:[Int]) -> [Int] {
  return 0
}

 

 

💻 내가 푼 방법

func solution(_ arr:[Int]) -> [Int] {
  var deleteNum: [Int] = []
  var result = arr.map{$0}
  
  deleteNum.append(arr.min()!)
  
  for i in result {
    if i == deleteNum[0] {
      result.removeAll{ $0 == deleteNum[0] }
      break
    }
  }
  
  return result.isEmpty ? [-1] : result
}

 

1. 삭제해야할 arr 배열의 최솟값을 담아줄 deleteNum 배열 생성

2. 제공되는 arr 배열은 상수이므로 map 함수를 통해 새로운 배열 result에 담아줌

3. arr 배열에 min() 함수를 적용하여 최솟값을 deleteNum에 담아줌

4. result 배열을 도는 반복문을 만들어서 i가 최솟값 배열 deleteNum과 같다면 result 배열에서 해당 값을 삭제하도록 처리

5. 최솟값 삭제 시 반복문이 중단되도록 break 걸어줌

6. 삼항연산자 이용하여 배열이 비었으면 [-1] 반환, 아니면 result 값 반환

 

 


🔎 의문점과 공부한 것