Skip to content

Commit 83e3f10

Browse files
committed
6주차 문제 풀이
1 parent 7bdd9a1 commit 83e3f10

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/**
2+
* @param {number[]} height
3+
* @return {number}
4+
*/
5+
/*
6+
주어진 정수 배열 height는 여러 개의 세로 막대기 높이를 나타낸다.
7+
각 막대기는 x축 위의 서로 다른 위치에 수직으로 세워져 있다.
8+
9+
i번째 막대기의 좌표는 (i, 0)에서 (i, height[i])이다.
10+
11+
이 막대기들 중에서 서로 다른 두 개의 막대기를 선택하면,
12+
두 막대기와 x축이 만나 하나의 물을 담을 수 있는 용기(container)를 만들 수 있다.
13+
14+
문제 목표:
15+
- 두 막대기를 선택했을 때
16+
- 그 사이에 담을 수 있는 물의 양(면적)이 최대가 되도록 한다.
17+
- 그 최대 물의 양을 반환한다.
18+
19+
중요한 조건:
20+
1) 용기는 기울일 수 없다. (막대기는 항상 수직)
21+
2) 물의 높이는 선택한 두 막대기 중 더 낮은 높이로 결정된다.
22+
3) 물의 너비는 두 막대기 사이의 거리(인덱스 차이)이다.
23+
24+
즉,
25+
물의 양 = (두 막대기 사이 거리) × (두 막대기 중 더 낮은 높이)
26+
27+
입력 형식:
28+
- height: 정수 배열
29+
- n == height.length
30+
- 2 <= n <= 100,000
31+
- 0 <= height[i] <= 10,000
32+
33+
출력 형식:
34+
- 담을 수 있는 최대 물의 양 (정수)
35+
36+
예시:
37+
38+
Example 1
39+
입력: height = [1,8,6,2,5,4,8,3,7]
40+
출력: 49
41+
설명:
42+
- 여러 막대기 쌍 중
43+
- 특정 두 막대기를 선택했을 때
44+
- 거리와 높이의 곱이 가장 커짐
45+
- 그 최대값이 49
46+
47+
Example 2
48+
입력: height = [1,1]
49+
출력: 1
50+
설명:
51+
- 두 막대기 사이 거리 = 1
52+
- 더 낮은 높이 = 1
53+
- 물의 양 = 1 × 1 = 1
54+
*/
55+
56+
var maxArea = function(height) {
57+
58+
let leftIndex = 0;
59+
let rightIndex = height.length - 1;
60+
let maxValue = 0;
61+
62+
while (leftIndex < rightIndex) {
63+
const width = rightIndex - leftIndex;
64+
let heightValue = 0;
65+
if (height[leftIndex] < height[rightIndex]){
66+
heightValue = height[leftIndex];
67+
}else {
68+
heightValue = height[rightIndex];
69+
}
70+
const area = width * heightValue;
71+
72+
if (area > maxValue) {
73+
maxValue = area;
74+
}
75+
76+
if (height[leftIndex] < height[rightIndex]) {
77+
leftIndex++;
78+
} else {
79+
rightIndex--;
80+
}
81+
}
82+
83+
return maxValue;
84+
85+
};
86+
87+
console.log(maxArea([1,8,6,2,5,4,8,3,7]))
88+
console.log(maxArea([1,1]))
89+

0 commit comments

Comments
 (0)