Skip to content

Commit 7ae4344

Browse files
committed
Container With Most Water - 풀이 수정
1 parent a59d354 commit 7ae4344

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

container-with-most-water/forest000014.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@
2727
즉, "자신보다 크거나 같으면서", "가장 멀리 있는(오른쪽이든 왼쪽이든)" 선분만을 후보로 삼아 확인하면 충분하다.
2828
(그 외의 나머지, 즉 자신보다 크거나 같으면서, 가장 멀리있지 않은 나머지 선분들은, 자연스럽게 탐색하지 않을 수 있다.)
2929
30-
정리하자면, 주어진 선분 i에 대해서, 단 2번의 탐색만 하면 충분하다.
30+
정리하자면, 주어진 선분 i에 대해서, 단 2번(오른쪽, 왼쪽)의 탐색만 하면 충분하다.
3131
32-
(3) 내림차순 정렬과 2개의 PQ를 활용하면, 위 탐색을 O(logn) 시간에 수행할 수 있다.
33-
선분들을 내림차순으로 정렬해놓고, 하나씩 순회함 (say, i번째 선분)
32+
(3) 내림차순 정렬과 2개의 PQ를 아래처럼 활용하면, 위 탐색을 O(logn) 시간에 수행할 수 있다.
3433
PQ는 각각 x 좌표 기준 max heap(가장 오른쪽의 선분을 찾기 위함), x 좌표 기준 min heap(가장 왼쪽의 선분을 찾기 위함)을 사용한다.
35-
자신보다 크거나 같으면서 가장 오른쪽으로 멀리 있는 선분의 위치를 찾아서(= PQ(max heap)의 root), 최대 물의 양을 계산한다.
36-
자신보다 크거나 같으면서 가장 왼쪽으로 멀리 있는 선분의 위치를 찾아서(= PQ(min heap)의 root), 최대 물의 양을 계산한다.
37-
i번째 선분을 PQ 2개에 각각 넣는다.
34+
선분들을 길이 내림차순으로 정렬해놓고, 하나씩 순회하면서 (say, i번째 선분), 아래 과정을 반복한다.
35+
- 자신보다 크거나 같으면서 가장 오른쪽으로 멀리 있는 선분의 위치를 찾아서(= 현재 PQ(max heap)의 root), 최대 물의 양을 계산한다.
36+
- 자신보다 크거나 같으면서 가장 왼쪽으로 멀리 있는 선분의 위치를 찾아서(= 현재 PQ(min heap)의 root), 최대 물의 양을 계산한다.
37+
- i번째 선분을 PQ 2개에 각각 넣는다.
3838
3939
4040
solution 3. two pointers
@@ -44,7 +44,7 @@
4444
Space Complexity: O(1)
4545
4646
2 포인터를 활용하면, PQ도 없이 시간 복잡도를 O(n)으로 줄일 수 있었다.
47-
단순히 "작은 쪽을 줄이기보다는, 쪽을 줄이는 게 유리하겠지" 정도의 greedy한 논리는 충분하지 않은 것 같고, 더 명확한 근거가 있을 것 같은데 시간 관계상 고민해보지는 못했다.
47+
단순히 " 쪽을 줄이기보다는, 작은 쪽을 줄이는 게 유리하겠지" 정도의 greedy한 논리는 충분하지 않은 것 같고, 더 명확한 근거가 있을 것 같은데 시간 관계상 고민해보지는 못했다.
4848
4949
To-Do : 풀이가 대강 이해는 되었지만, 이게 왜 되는지, 엄밀하게 이해하기 위해 PQ를 사용했던 논리를 좀 더 발전시켜볼 필요가 있다.
5050

0 commit comments

Comments
 (0)