https://programmers.co.kr/learn/courses/30/lessons/42748
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
제출한 답안
import Foundation
func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
var cutArray = [Int]()
var returnArray = [Int]()
for command in commands {
cutArray = [Int]()
for num in array[(command[0]-1)...(command[1]-1)] {
cutArray.append(num)
}
cutArray.sort()
returnArray.append(cutArray[(command[2]-1)])
}
return returnArray
}
'정렬을 내가 해야할까?' 잠시 생각해봤다가 찾아보니 swift에서 정렬을 지원하네요.
sort() 이거면 배열 안의 내용 자체를 정렬해줍니다. 이거 말고도 리버스 등등 여러 메소드를 지원합니다.
정렬 등 지원하는 메소드에 대한 공식문서입니다.
https://developer.apple.com/documentation/swift/array/1688499-sort
Apple Developer Documentation
developer.apple.com
다시 풀어본 답안
import Foundation
func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
return commands.map({ array[($0[0]-1)...($0[1]-1)].sorted()[$0[2]-1] })
}
map을 사용해보았습니다.
array에 접근해서 실행하는 commands의 각 요소 부분이 똑같은 실행을 반복하기에 map으로 처리가 가능합니다.
for num in array[(command[0]-1)...(command[1]-1)] {
cutArray.append(num)
}
returnArray.append(cutArray.sorted()[(command[2]-1)])
이 부분을 map으로 처리한 것이고
sorted() 로 정렬된 배열을 얻어와 바로 처리하였습니다.
'iOS > 알고리즘' 카테고리의 다른 글
[프로그래머스]기능개발 (0) | 2021.08.23 |
---|---|
[프로그래머스]모의고사 (0) | 2021.08.22 |
[백준]1789번: 수들의 합 (0) | 2021.08.15 |
[프로그래머스]수박수박수박수박수박수? (0) | 2021.08.12 |
[프로그래머스]짝수와 홀수 (0) | 2021.08.12 |