프로그래머 문제 해결 31일차(디딤돌 건너기)

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/64062

C++


솔루션 자체는 전날 사용했던 투 포인터 방식을 사용했습니다.

아이들이 건널 수 없도록 적어도 k 개의 조각이 연속으로 부러졌습니다.

포인터 범위를 1.0에서 k-1까지 유지합니다.

2. 해당 섹션을 multiset에 넣기 (1. 정렬 목적 2. 중복 값 허용)

3. 구간에서 가장 큰 값 찾기 (구간의 모든 돌다리는 사람들이 가장 큰 값을 건너야 부서집니다.)

값이 현재 최대값보다 작으면 최대값이 업데이트됩니다.

4. multiset에서 섹션 시작 부분의 값을 제거합니다.

5. start~end 구간이 k보다 짧으면 end++를 실행하고 돌다리의 값을 문장에 넣는다.

6. 최종 값을 반복하고 반환

검토

첫째, 전날 알고리즘이 머리를 깨뜨려서 바로 풀 수 있었다. 의외로 솔루션 후반부에 dp로 해결하신 분들이 꽤 있었습니다.