{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉그리디〉센서 스트림 무중복 최장 구간← 이전다음 →
#023 · 그리디중간슬라이딩 윈도우,마지막 등장 위치

센서 스트림 무중복 최장 구간

문제

공장 천장의 수신기가 지나가는 태그의 센서 ID를 읽어 순서대로 기록합니다. 기록은 ids 배열에 담겨 있으며, 같은 센서가 여러 번 읽힐 수 있습니다.

분석 담당자는 같은 센서 ID가 두 번 나오지 않는 가장 긴 연속 구간 을 찾으려 합니다.

그 구간의 [시작 인덱스, 길이]를 반환하는 solution(ids) 함수를 작성하세요. 가장 긴 구간이 여럿이면 시작 인덱스가 가장 작은 것 을 반환합니다. 기록이 비어 있으면 [-1, 0]을 반환합니다.

예시

ids=[4,7,4,9,7,3] → [2,4]
  인덱스 2부터 4개(4,9,7,3)가 서로 다른 가장 긴 구간이다.
  인덱스 1부터 3개(7,4,9)도 중복이 없지만 더 짧다.
 
ids=[1,2,3,4]     → [0,4]
  전체가 중복 없는 구간이다.
 
ids=[8,9,8,9]     → [0,2]
  길이 2인 구간이 (0,1), (1,2), (2,3) 셋 있고 시작이 가장 이른 것을 고른다.
 
ids=[5,5,5]       → [0,1]
 
ids=[]            → [-1,0]

제약 조건

  • 0 ≤ ids.length ≤ 100,000
  • 1 ≤ ids[i] ≤ 1,000,000,000
  • 반환값은 길이 2짜리 배열입니다

시간 복잡도 목표: O(N)

테스트 케이스

예시 1: 뒤쪽에서 길이 4 구간
입력: ids = [4,7,4,9,7,3]
출력: [2,4]
예시 2: 전체가 무중복
입력: ids = [1,2,3,4]
출력: [0,4]
예시 3: 동점이면 시작이 이른 구간
입력: ids = [8,9,8,9]
출력: [0,2]
예시 4: 같은 센서만 반복
입력: ids = [5,5,5]
출력: [0,1]
예시 5: 기록이 비어 있음
입력: ids = []
출력: [-1,0]
엣지: 기록이 하나뿐
입력: ids = [42]
출력: [0,1]
solution.ts
에디터 로딩 중…

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