빗물 트래핑
Q. 높이를 입력받아, 비가 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라. ex) [3, 0, 1] -> 1 , [1, 4, 1, 5] -> 3 1. 투 포인터 활용 두 개의 포인터를 리스트의 맨 왼쪽, 오른쪽에서 각각 중앙을 향해 출발시킨다. 양쪽의 왼쪽에서 가장 높은 값, 오른쪽에서 가장 높은 값 중에서 더 작은 쪽을 큰 쪽을 향해 이동시킨다 (left_max가 3이고 right_max가 5인 경우 left가 우측으로 1칸 이동) 이때 왼쪽을 예로 들자면, 왼쪽부터 우측으로 이동하며 높이가 낮아지는 경우 낮아진 만큼을 결과값에 합산하고, 높이가 높아지는 경우에는 해당 인덱스를 left_max로 갱신한다. (오른쪽도 방향만 반대일 뿐 동일하다) 위의 과정을 반복하면, 결국 left와 right가 ..
2021. 2. 11.