Skip to content

Commit fdbc023

Browse files
author
แ„‹แ…ตแ„‹แ…งแ†ซแ„‰แ…ฎ
committed
container with most water
1 parent f4dfa63 commit fdbc023

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package leetcode_study
2+
3+
/*
4+
* ์ฃผ์–ด์ง„ ๋†’์ด์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ฉด์ ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
5+
* Brute force๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ ธ๊ฐ€๋ฉฐ ์ตœ๋Œ€ ๋ฉด์ ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•.
6+
* ์ฃผ์–ด์ง„ ๋†’์ด(n)์˜ ๊ฐœ์ˆ˜๋Š” 2 ๋ณด๋‹ค ํฌ๊ฑฐ๊ฐ€ ๊ฐ™๊ณ  10^4 ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ.
7+
* ์ด์ค‘ Loop์œผ๋กœ ํ•ด๊ฒฐํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ (10^8 ์ดํ•˜๋กœ ํ•ด๊ฒฐํ•ด์•ผ ์ œํ•œ ์‹œ๊ฐ„ ์•ˆ์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ)
8+
*
9+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2)
10+
* -> ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋†’์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰: O(n^2)
11+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
12+
* -> ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์—†์Œ.
13+
* */
14+
fun maxArea01(height: IntArray): Int {
15+
var maxValue = 0
16+
for (i in 0 until height.size) {
17+
for (j in i + 1 until height.size) {
18+
// ๋„ˆ๋น„๋Š” ๋‘ ์„ ๋ถ„ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ
19+
val width = j - i
20+
// ๋†’์ด๋Š” ๋‘ ์„ ๋ถ„ ์ค‘ ์ž‘์€ ๊ฐ’
21+
val containerHeight = Math.min(height[i], height[j])
22+
// ๋ฉด์  ๊ณ„์‚ฐ
23+
val area = width * containerHeight
24+
// ์ตœ๋Œ€๊ฐ’ ๊ฐฑ์‹ 
25+
maxValue = Math.max(maxValue, area)
26+
}
27+
}
28+
return maxValue
29+
}
30+
31+
/*
32+
* ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฌธ์ œ ํ’€์ด.
33+
* ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์กฐ๊ฑด๊ณผ ์š”์†Œ
34+
* -> ๋†’์ด์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™ผ์ชฝ๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ ๊ฐ’์—์„œ ๋‘ ๊ฐ’ ์ค‘ ์ž‘์€ ๊ฐ’์ด ๋†’์ด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ.
35+
* -> ์˜ค๋ฅธ์ชฝ์˜ ๊ฐ’์€ ์™ผ์ชฝ ๊ฐ’๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์—†์Œ.
36+
* -> ๋„ˆ๋น„ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค์—์„œ ์™ผ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ๋บ€ ๊ฐ’์ž„.
37+
*
38+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
39+
* -> ์ฃผ์–ด์ง„ ๋†’์ด ๋ฐฐ์—ด์—์„œ ์–‘์ชฝ ๋ ๊ฐ’์„ ์ฆ๊ฐ/๊ฐ€๊ฐ ํ•ด๊ฐ€๋ฉฐ ๋ฐ˜๋ณต ์ง„ํ–‰: O(n)
40+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
41+
* -> ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์—†์Œ.
42+
* */
43+
fun maxArea02(height: IntArray): Int {
44+
var maxValue = 0
45+
var left = 0
46+
var right = height.size - 1
47+
while (left <= right) {
48+
val width = right - left
49+
val containerHeight = Math.min(height[left], height[right])
50+
val area = width * containerHeight
51+
maxValue = Math.max(maxValue, area)
52+
if (height[left] < height[right]) {
53+
left++
54+
} else {
55+
right--
56+
}
57+
}
58+
return maxValue
59+
}

0 commit comments

Comments
ย (0)