문제 설명
function solution(documents, query, limit)를 작성하세요. 입력과 출력은 모두 JSON으로 표현 가능한 값입니다. 입력 배열과 객체를 직접 변경하면 안 돼요. 외부 라이브러리, 네트워크 요청, 비동기 함수는 사용할 수 없어요. documents:{id:string,vector:integer[]}[], query:integer[], limit:nonnegative integer. 모든 벡터는 동일한 길이 1~32이며 요소 -100~100. cosine=내적/(두 벡터 길이의 곱), 어느 한 벡터가 영벡터면 cosine=0. score=Math.round(cosine*1_000_000). 반올림된 score 내림차순, 동점은 입력 순서 유지. 상위 limit개의 {id,score} 반환. limit가 문서 수를 넘어도 유효합니다. 입력 범위: 각 입력 배열은 최대 50,000개 항목, 문자열은 최대 1,000자입니다. 숫자는 유한한 값이며, 정수와 합산 결과는 JavaScript의 안전한 정수 범위 안에 있습니다. 그 외 자료형과 유효성 조건은 위 규칙을 따릅니다.
입출력 예시
예시 1
함수 인자
[
[
{
"id": "a",
"vector": [
1,
0
]
},
{
"id": "b",
"vector": [
0,
1
]
}
],
[
1,
0
],
2
]반환값
[
{
"id": "a",
"score": 1000000
},
{
"id": "b",
"score": 0
}
]예시 2
함수 인자
[
[
{
"id": "a",
"vector": [
1,
1
]
},
{
"id": "b",
"vector": [
2,
2
]
}
],
[
1,
1
],
1
]반환값
[
{
"id": "a",
"score": 1000000
}
]예시 3
함수 인자
[
[
{
"id": "a",
"vector": [
1,
0
]
},
{
"id": "b",
"vector": [
0,
1
]
},
{
"id": "c",
"vector": [
1,
0
]
}
],
[
1,
0
],
2
]반환값
[
{
"id": "a",
"score": 1000000
},
{
"id": "c",
"score": 1000000
}
]