1️⃣ 문제

  • 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수
  • 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성

2️⃣ 풀이 방법

특별한 알고리즘이 필요한 문제가 아니라, 문제 그대로 array를 i번째부터 j번째까지 자르고, 정렬한 후 k번째 원소 answer에 추가해주기만 하면 끝!

3️⃣ 코드

  • 내가 풀이한 코드
import Foundation

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    var answer = [Int]()
    
    commands.forEach() {
        var subArray = array[$0[0] - 1..<$0[1]].sorted(by: <)
        answer.append(subArray[$0[2] - 1])
    }
    
    return answer
}
  • map()을 이용해 더 간단하게 짤 수도 있음. (다른 사람 풀이 참고)
import Foundation

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
  	return commands.map {
      array[$0[0]-1..<$0[1]].sorted()[$0[2] - 1]
    }
}

4️⃣ 이 문제를 풀면서 되새긴 점

Int 배열 특정 범위로 접근하기

  • substring처럼 index랑 range 만들어서 자르는데에 익숙해져서 이렇게 쉬운 방법이 있는 걸 까먹었다..😅

    array[0...1]
    array[1..<5]