문제: 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
'Algorithm > Programmers' 카테고리의 다른 글
[PRGRMS]42890번: 후보키 (0) | 2022.03.09 |
---|---|
[PRGRMS]92335번: k진수에서 소수 개수 구하기 (0) | 2022.03.05 |
[PRGRMS]81302번: 거리두기 확인하기 (0) | 2022.03.03 |
[2020 카카오 기출] 기둥과 보 설치(JAVA) (0) | 2021.07.01 |
[2020 카카오 기출] 블록 이동하기(JAVA) (0) | 2021.06.20 |