{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉이진 탐색〉점수판에서 동점 구간 찾기← 이전다음 →
#025 · 이진 탐색쉬움이분 탐색,경계 찾기

점수판에서 동점 구간 찾기

문제

교내 경시대회 결과가 오름차순으로 정렬된 점수 배열 scores로 주어집니다. 같은 점수를 받은 학생이 여럿 있을 수 있으므로 배열에는 중복 값이 들어 있습니다.

시상식 진행을 위해 특정 점수 target을 받은 학생들이 배열의 어느 구간에 몰려 있는지 알아내려 합니다. target을 받은 학생이 한 명 이상이면 그 구간의 [첫 번째 인덱스, 마지막 인덱스]를, 한 명도 없으면 [-1, -1]을 반환하는 solution(scores, target) 함수를 작성하세요.

scores의 길이가 매우 클 수 있으므로 처음부터 끝까지 훑는 방식으로는 통과할 수 없습니다.

예시

scores target 결과
[10, 20, 20, 20, 35, 40, 40] 20 [1, 3]
[10, 20, 20, 20, 35, 40, 40] 40 [5, 6]
[10, 20, 20, 20, 35, 40, 40] 30 [-1, -1]

예시 1 설명: 20점은 인덱스 1, 2, 3에 있으므로 [1, 3]입니다.

예시 3 설명: 30점을 받은 학생이 없으므로 [-1, -1]입니다.

제약 조건

  • 0 ≤ scores.length ≤ 200,000
  • 0 ≤ scores[i] ≤ 1,000,000, 0 ≤ target ≤ 1,000,000
  • scores는 오름차순으로 정렬되어 있으며 중복 값이 있을 수 있습니다.
  • 반환 배열은 길이 2의 number[]입니다.

시간 복잡도 목표: O(log n)

테스트 케이스

예시 1: 20점이 인덱스 1~3에 분포
입력: scores = [10,20,20,20,35,40,40], target = 20
출력: [1,3]
예시 2: 배열 끝에 붙은 구간
입력: scores = [10,20,20,20,35,40,40], target = 40
출력: [5,6]
예시 3: 해당 점수 없음
입력: scores = [10,20,20,20,35,40,40], target = 30
출력: [-1,-1]
원소가 하나뿐이고 일치
입력: scores = [7], target = 7
출력: [0,0]
빈 점수판
입력: scores = [], target = 5
출력: [-1,-1]
전체가 같은 점수
입력: scores = [4,4,4,4], target = 4
출력: [0,3]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.