피드로 돌아가기
AtCoder Beginner Contest 457 参加記録と解答例 (A D問題)
Dev.toDev.to
Backend

AtCoder Beginner Contest 457 参加記録と解答例 (A D問題)

Binary Search와 인덱싱 최적화를 통한 O(N log K) 시간 복잡도 달성

iwamutsu2562026년 5월 9일5intermediate

Context

대규모 수열 데이터 처리 시 발생하는 인덱스 계산 오버헤드와 시간 복잡도 제약 해결이 필요함. 특히 K값이 $10^{18}$에 달하는 극한의 제약 사항으로 인해 단순 반복문이나 Priority Queue 기반 접근은 TLE(Time Limit Exceeded)를 유발함.

Technical Solution

  • 0-indexed 변환을 통한 인덱스 계산 단순화 및 경계값 조건 분기 제거
  • modulo 연산을 이용해 거대 수열의 반복 구조 내 특정 위치를 상수로 산출하는 로직 설계
  • 최솟값의 최대화 문제 정의에 따른 Binary Search 기반의 최적해 탐색 전략 채택
  • 목표값 달성 가능 여부를 판별하는 check 함수를 통해 O(N)의 시간으로 검증 수행
  • $10^{20}$ 범위의 Search Space 설정을 통한 정수 오버플로우 및 범위 부족 문제 해결
  • 각 요소별 필요 연산 횟수를 몫과 나머지를 이용한 수식으로 계산하여 루프 횟수 최소화

- 최솟값의 최대화(Maximize the Minimum) 요구사항 확인 시 Binary Search 적용 검토 - $10^{18}$ 이상의 대규모 제약 조건 발견 시 시뮬레이션 대신 수학적 공식 기반의 상태 전이 설계 - 인덱스 기반 계산 시 0-indexed 표준화로 Edge Case 처리 비용 감소

원문 읽기