AI Native 레벨별 코테

레벨 3 · 심화 · 구조와 효율

벡터 검색 결과 순위 만들기

코사인 유사도·반올림·동점 순서를 검증합니다.

문제 설명

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
  }
]
연습에는 포인트·제한 시간·제출 횟수가 없습니다. AI와 검색을 자유롭게 활용하고, 로그인 후 공개 예제를 실행하거나 로컬에서 검증하세요.

77 / 20,000자

내 테스트 추가 · 선택

documents, query, limit 순서의 인자를 JSON 배열로 입력하세요. 예제 3개와 이 테스트를 함께 실행합니다.

예제 검증 파일

두 파일을 같은 폴더에 저장하고 Node.js로 아래 명령을 실행하세요. 결과의 checks에서 예제별 통과 여부를 볼 수 있습니다.

node verify-retrieval-ranking.mjs
문의하기

서비스명: 포트포올
문의는 운영자에게 이메일로 전송됩니다.

이메일과 문의 내용은 답변을 위해 운영자 및 메일 발송 서비스로 전송됩니다. 비밀번호·결제정보·민감한 개인정보는 입력하지 마세요.