Skip to content

Conversation

@jhm9595
Copy link
Owner

@jhm9595 jhm9595 commented Aug 17, 2022

Time Complexity : O(NM)

풀이 간 생각 과정

  1. 먼저 가장 무식한 방법으로 풀어봄. 이중 for문을 이용하여 (j-i) * Math.min(arr[i], arr[j]) 의
    값이 가장 최대인 것을 구해보니 예제 값은 정답이 나옴.
  2. 하지만 제출해보니 엄청나게 많은 배열의 수에서는 Time Limit Exceed가 나옴.
  3. 그렇다면 거꾸로 가장 가로폭이 넓은 것부터 시작을 해보자. 이렇게 했을 경우에 이중 포문을 끝까지 돌릴 필요가 있을까?
  4. 각각의 폭은 가질수 있는 최대넓이가 존재한다. 그 최대넓이보다 내가 산출한 maxArea값이 더 크다면 더 이상 돌릴 필요가
    없을 것 같다.
  5. 각각의 폭이 가질수 있는 최대넓이를 구하는 방법은, 배열의 가장 큰 숫자 ( 즉 최대높이 ) 와 현재의 폭 을 곱한값이
    된다.
  6. 최장 가로폭일때 maxArea를 구한 후, 가로폭을 하나씩 줄일 때마다 가능한 최대 넓이보다 현재 내가 구한 maxArea가
    더 넓다면 리턴하자.

1. 먼저 가장 무식한 방법으로 풀어봄. 이중 for문을 이용하여 (j-i) * Math.min(arr[i], arr[j]) 의
값이 가장 최대인 것을 구해보니 예제 값은 정답이 나옴.
2. 하지만 제출해보니 엄청나게 많은 배열의 수에서는 Time Limit Exceed가 나옴.
3. 그렇다면 거꾸로 가장 가로폭이 넓은 것부터 시작을 해보자. 이렇게 했을 경우에 이중 포문을 끝까지 돌릴 필요가 있을까?
4. 각각의 폭은 가질수 있는 최대넓이가 존재한다. 그 최대넓이보다 내가 산출한 maxArea값이 더 크다면 더 이상 돌릴 필요가
없을 것 같다.
5. 각각의 폭이 가질수 있는 최대넓이를 구하는 방법은, 배열의 가장 큰 숫자 ( 즉 최대높이 ) 와 현재의 폭 을 곱한값이
된다.
6. 최장 가로폭일때 maxArea를 구한 후, 가로폭을 하나씩 줄일 때마다 가능한 최대 넓이보다 현재 내가 구한 maxArea가
더 넓다면 리턴하자.
@jhm9595 jhm9595 requested a review from bigelephant29 August 17, 2022 03:26
@bigelephant29
Copy link
Collaborator

I think there exists O(N) solution. Think about two pointer + greedy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants