알고리즘/programmers

[Programmers 코딩테스트 고득점 Kit] 징검다리

꾸준함. 2021. 9. 26. 03:44

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/43236

 

코딩테스트 연습 - 징검다리

출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가

programmers.co.kr

이분 탐색을 활용하는 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. rocks 벡터를 오름차순 정렬해줍니다.

2. 각 지점 사이의 거리 최솟값은 1, 최댓값은 distance로 설정해준 뒤 이분 탐색을 진행해줍니다.

2.1 mid 값보다 구간이 짧은 돌은 삭제해주고 삭제된 돌들이 n 이하인지 확인해줍니다.

2.2 n 이하라면 최소값을 mid로 설정해 높여주고 n 초과라면 최댓값을 mid로 설정해 낮춰줍니다.

3. 2번 과정을 통해 얻은 구간의 최소 중 최대값을 반환해줍니다.

 

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형