일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트 알고리즘 문제
- JavaScript
- 타입스크립트
- Baekjoon
- stack문제
- Next
- til
- next13
- 자바스크립트 문제풀이
- 자바스크립트 연결리스트
- CSS
- leetcode문제풀이
- 자바스크립트 문제 풀이
- react
- 프로그래머스
- leetcode
- lodash
- 자바스크립트코딩테스트
- 리액트쿼리
- JS
- 리액트
- HTML
- 제로베이스
- 자바스크립트 문제
- NPM
- 프론트엔드
- 자바스크립트
- 알고리즘문제풀이
- Next.js13
- 자바스크립트 알고리즘
- Today
- Total
코드노트
LeetCode 11. Container With Most Water 자바스크립트 문제 풀이 본문
LeetCode 11. Container With Most Water 자바스크립트 문제 풀이
코드노트 2022. 9. 30. 17:33문제 설명
You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]).
Find two lines that together with the x-axis form a container, such that the container contains the most water.
Return the maximum amount of water a container can store.
height길이 의 정수 배열이 제공 됩니다 n. 선의 두 끝점이 및 가 되도록 n수직선이 그려집니다.
ith(i, 0)(i, height[i])
컨테이너에 가장 많은 물이 포함되도록 x축과 함께 컨테이너를 형성하는 두 개의 선을 찾으십시오.
컨테이너가 저장할 수 있는 최대 물의 양을 반환 합니다 .
입력: height = [1,8,6,2,5,4,8,3,7]
출력: 49
설명: 위의 수직선은 배열 [1,8,6,2,5,4,8]로 표시됩니다. ,3,7].
이 경우 컨테이너가 담을 수 있는 최대 물 영역(파란색 부분)은 49개입니다.
문제 요약
* 두개의 컨테이너 사이의 담을 수 있는 최대 물의 영역(넓이)를 구하라
- 배열의 요소들중 두 개를 차례대로 순회한다.
- 두 개의 index 사이의 값과 두 개의 요소 중 낮은 수를 곱한다
- 차례대로 곱한값들을 비교해서 가장 높은 값을 출력한다.
처음 문제를 보고 또 이해를 잘 못했다. 코딩 문제들을 왜 문제들을 어렵게 설명하고 꼬아놓는지...ㅠㅠ
우선 두개의 Index를 모두 탐색해야하기 때문에
첫 index를 증가시키고 끝 index값을 증감 시키면서 순회해야한다.
그리고 두 개의 index 값을 비교하여 낮은 값과 두 index 사이의 차를 구해서 곱하면 된다.
문제 풀이
var maxArea = function (height) {
let left = 0; // 첫 index
let right = height.length - 1; // 끝 index
let maxSize = 0; // 가장 큰 값을 저장할 변수
while (left < right) { // 첫 index가 끝 index보다 클때까지 순회
const heightLeft = height[left],
heightRight = height[right]; // 두 변수에 배열의 요소를 할당
const width = right - left; // 넓이 구하기 (index 끝 값 - index 첫 값)
const size = width * Math.min(heightLeft, heightRight); // 넓이 * 두 요소 중 낮은 값
maxSize = Math.max(maxSize, size); // maxSize에는 큰 값들을 계속 업데이트 시킨다.
if (heightLeft <= heightRight) { // 첫 요소 값이 끝 요소 값보다 작거나 같으면 증가, 증감 시킨다.
left++;
} else {
right--;
}
}
return maxSize;
};
- 첫 위치, 끝 위치를 통해서 증가시키고 증감시키면서 비교할 수 있는게 큰 레퍼런스가 될거 같다.
- 그리고 지금까지 큰 수 또는 작은수를 저장할 때에는 비교연산자를 통해서 할당시켰는데 이제는 Math, max,min을 통해서 비교해도 좋을것 같다.
'Code note > 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
Leetcode 66. Plus One / Easy / 자바스크립트 문제 풀이 (0) | 2022.10.13 |
---|---|
프로그래머스 숫자의 표현 자바스크립트 문제 풀이 (0) | 2022.10.06 |
알고리즘 문제 오답풀이_1 (1) | 2022.09.29 |
프로그래머스 최솟값 만들기 자바스크립트 풀이 (0) | 2022.09.29 |
LeetCode 8. String to Integer (atoi) 자바스크립트 문제 풀이 (0) | 2022.09.27 |