반응형
https://leetcode.com/problems/container-with-most-water/
2. 2022.01.30 시도
소요시간: 4분
class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length -1;
int ret = 0;
while (left < right) {
int w = right - left;
int h = Math.min(height[left], height[right]);
ret = Math.max(ret, w * h);
if (height[left] <= height[right]) {
left++;
} else {
right--;
}
}
return ret;
}
}
풀이 접근 과정
일종의 포인터 문제다. 그래서 양쪽의 index를 잡고 넓이를 비교해가면서 풀면 되겠다.
느낀점
- 문제를 풀어봤던거라 유형을 정확히 알고 있엇다. 유형만 알아도 문제가 쉽게 풀리는거 보니 문제를 보면서 유형 접근을 먼저해보는 것도 좋겠다는 생각이 들었다.
1. 2021.01.25 시도
소요시간 : 17분
class Solution {
public int maxArea(int[] height) {
int area = 0;
int s=0;
int e=height.length-1;
while(true) {
if (s >= e) {
break;
}
area = Math.max(area, Math.min(height[s], height[e])* (e-s));
if (height[s] < height[e]) {
s++;
} else {
e--;
}
}
return area;
}
}
풀이 접근 과정
양끝에서 가운대로 모이면 어떨가?
느낀점
- 두점 잡아서 짧은 쪽을 이동시키면서 넓이를 비교한다. 이게 어차피 한칸 더 가까워질때 밑변은 같으므로 긴 높이를 유지하는게 유리하다.
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(814. Binary Tree Pruning) (0) | 2022.02.05 |
---|---|
.leetcode(515. Find Largest Value in Each Tree Row) (0) | 2022.01.30 |
.leetcode(841. Keys and Rooms) (0) | 2022.01.30 |
.leetcode(657. Robot Return to Origin) (0) | 2022.01.27 |
.leetcode(876. Middle of the Linked List) (0) | 2022.01.24 |