{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉이진 탐색〉순환 버퍼의 기록 시작 지점← 이전다음 →
#031 · 이진 탐색어려움이분 탐색,회전 배열

순환 버퍼의 기록 시작 지점

문제

계측 장비는 측정값을 크기가 고정된 순환 버퍼에 기록합니다. 버퍼가 가득 차면 다시 0번 칸부터 덮어쓰기 때문에, 장비에서 그대로 내려받은 배열 buffer는 오름차순으로 정렬된 값들이 어느 한 지점에서 회전된 모양이 됩니다.

예를 들어 원래 순서가 [7, 12, 19, 31, 42, 58]이었다면, 내려받은 배열은 [31, 42, 58, 7, 12, 19]처럼 보입니다. 이때 값이 가장 작은 7이 있는 인덱스 3이 기록이 시작된 지점입니다.

buffer가 주어질 때 기록 시작 지점, 즉 가장 작은 값이 있는 인덱스를 반환하는 solution(buffer) 함수를 작성하세요. 회전이 일어나지 않아 이미 오름차순이면 0을 반환합니다.

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

예시

buffer 결과 설명
[31, 42, 58, 7, 12, 19] 3 가장 작은 값 7의 위치
[3, 9, 14] 0 회전되지 않음
[20, 4] 1 마지막 한 칸만 앞으로 밀림
[6, 11, 25, 33, 2, 4, 5] 4 가장 작은 값 2의 위치

제약 조건

  • 1 ≤ buffer.length ≤ 200,000
  • -1,000,000 ≤ buffer[i] ≤ 1,000,000
  • buffer의 값은 모두 서로 다릅니다.
  • buffer는 오름차순으로 정렬된 배열을 0회 이상 회전시킨 것입니다.

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

공간 복잡도 목표: O(1)

테스트 케이스

예시 1: 가운데에서 회전
입력: buffer = [31,42,58,7,12,19]
출력: 3
예시 2: 회전되지 않음
입력: buffer = [3,9,14]
출력: 0
예시 3: 두 칸짜리 버퍼
입력: buffer = [20,4]
출력: 1
예시 4: 홀수 길이 버퍼
입력: buffer = [6,11,25,33,2,4,5]
출력: 4
칸이 하나뿐
입력: buffer = [15]
출력: 0
회전 지점이 맨 끝
입력: buffer = [50,61,72,88,9]
출력: 4
solution.ts
에디터 로딩 중…

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