주어진 숫자를 오름차순으로 정렬하고 맨 마지막 큰 숫자부터 차례로
첫 번째 숫자부터 차례로 더해나가면서 target이 되는 값을 찾는다.
단, 더해나가다가 target보다 더 큰 숫자가 되면 더 이상 진행할 필요 없으므로
멈추고 다음 숫자로 넘어간다.
단, 숫자들이 몇 번째인지 알아야 하기 때문에 enumerated를 진행하여 index와 함께 정렬한다.
let map = nums.enumerated().map{$0}
let sorted = map.sorted{$0.element < $1.element}sorted를 뒤집어 reversed를 만들어 차례로 가장 큰 숫자부터 순회하게 한다.
let reversed = sorted.reversed()
for large in reversed { ... }그 다음 for문으로 가장 작은 숫자부터 차례대로 더해나간다.
만약 작은 숫자와 큰 숫자를 더 했을 때 target이 된다면 정답이므로 숫자의 index를 배열에 담아 반환한다.
만약 작은 숫자와 큰 숫자를 더 했는데 target보다 크다면 정답이 될 수 없으므로 다음 큰 숫자로 넘어간다.
for large in reversed {
for small in sorted {
if large.element + small.element == target {
return [small.offset,large.offset]
}
if large.element + small.element > target {
break
}
}
}