문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/49995
코딩테스트 연습 - 쿠키 구입
과자를 바구니 단위로 파는 가게가 있습니다. 이 가게는 1번부터 N번까지 차례로 번호가 붙은 바구니 N개가 일렬로 나열해 놨습니다. 철수는 두 아들에게 줄 과자를 사려합니다. 첫째 아들에게는
programmers.co.kr
이분 탐색과 DP를 이용하는 문제였습니다.
알고리즘은 아래와 같습니다.
1. 우선 전처리를 통해 구간합을 미리 다 구해줍니다. ex) cache[i][j] = [i, j] 구간의 합
2. [l ~ m] 구간합과 동일한 [m + 1 ~ r] 구간 합을 구해주기 위해 아래와 같이 이분 탐색을 진행해줍니다.
2.1 left를 m + 1, right를 cookie 배열의 크기로 잡아주고 이분 탐색을 진행해주는데 [m + 1 ~ mid] 구간합이 [l~m] 구간합보다 작으면 구간을 넓혀주고 크면 구간을 좁혀줍니다.
2.2 정확한 [m + 1 ~ r] 구간을 찾았으면 answer를 업데이트 해주고 이분 탐색을 멈춰줍니다.
3. 2번을 통해 얻은 값을 반환해줍니다.
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 지형 이동 (0) | 2021.10.02 |
---|---|
[Programmers] 멀쩡한 사각형 (0) | 2021.10.01 |
[Programmers] 지형 편집 (0) | 2021.10.01 |
[Programmers] 스티커 모으기(2) (0) | 2021.10.01 |
[Programmers] 숫자 게임 (0) | 2021.10.01 |