[1번 - K번째 수]
배열을 정렬한 후, 원하는 index의 값을 찾아내는 과정이다.
import Foundation
func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
var res: [Int] = []
for com in commands {
var newArray = array[com[0]-1...com[1]-1].sorted()
res.append(newArray[com[2]-1])
}
return res
}
[프로세스]
1. 배열을 자른다.
2. 배열을 정렬한다.
.sorted
를 사용한다. by : 파라미터의 default 값이 < 이기에 오름차순으로 정렬된다.
3. 배열을 인덱싱한다.
크게 어려움 없이 풀이 완료!
[2번 - H-Index]
교수들을 논문 기반으로 평가하기 위한 지표.
H-Index에 대해서는 아래에 자세히 설명되어 있으니 참고하자.
출처 : www.ibric.org/myboard/read.php?Board=news&id=270333
import Foundation
func solution(_ citations:[Int]) -> Int {
var res: Int = 0
if citations.count > 1 {
var sortedCitations = citations.sorted() {$0 > $1}
for (i,cit) in sortedCitations.enumerated() {
if i >= cit {
res = i
break
} else {
res = citations.count
}
}
} else if citations.count == 1{
res = 1
}
return res
}
[프로세스]
1. 배열의 길이를 살펴본다. (조건 : 최소 1 이상)
1-1. 배열의 길이가 1보다 크다면 2번으로
1-2. 배열의 길이가 1이라면 1을 결과값으로 가진다
2. 배열을 내림차순으로 정렬한다.
.sorted
에 후행 클로져({$0 > $1}
)를 사용하여 내림차순으로 정렬한다.
3. 배열을 .enumerated
하여 (index, value) 쌍으로 값을 갖도록 한다.
4. 논문수(index), 인용수(value)를 비교한다.
4-1. 논문수 >= 인용수 조건에 맞을 때, 그 때의 index 값이 H-Index이다. 이 때 `break`를 걸어 조건문을 나온다.
4-2. 논문수 < 인용수일 때, H-Index는 논문수(n)이다.
[추가정보]
-
.sorted()
: 원본 배열을 바꾸지 않고 새로 반환값을 내뱉는다. by : 파라미터를 통해 정렬 방식 선택 가능 (클로저 사용도 물론 가능) -
.sort()
: 원본 배열을 정렬해버린다. 그렇기에 원본을 건드리면 안될 때 사용하면 안된다. 똑같이 by : 파라미터 사용 -
.enumerated()
: 값에 대해 (index, value) 쌍으로 내뱉어준다.