본문 바로가기
Algorithm/Programmers

[PRGRMS]67258번: 보석 쇼핑

by BAYABA 2022. 3. 4.

문제: https://programmers.co.kr/learn/courses/30/lessons/67258


투 포인터로 해결할 수 있는 문제입니다.

구간의 시작점(st)과 구간의 끝점(en)에 있는 모든 보석을 구매합니다.

 

st값이 1씩 증가할 때 마다 이전 st값이 가리키는 인덱스에 있던 보석을 지웁니다.

en값이 1씩 증가할 때 마다 새로운 en값이 가리키는 인덱스에 있는 보석을 더합니다.

 

단, 예외 케이스를 신경써야하는 부분이 있습니다.

 

1. 구간의 시작점에 있는 보석을 2개이상 가지고 있는 경우, 구간의 크기를 하나 줄여도(구간의 시작점 + 1) 보석의 구매상태는 변하지 않으므로 구간 크기를 줄일 수 있습니다.

2. 모든 보석을 구매한 경우 구간의 시작점 + 1을 하여 다음 정답 구간이 존재하는지 이어서 탐색해야 합니다.


코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%EB%B3%B4%EC%84%9D%20%EC%87%BC%ED%95%91.java