728x90
문제
https://leetcode.com/problems/container-with-most-water/description/
풀이
- 부르트포스로 풀어보면 시간초과가 된다.
- 가장 왼쪽, 오른쪽 기둥을 시작점으로 잡고, 더 짧은 쪽은 안쪽으로 한 칸씩 이동하면서 넓이를 구해준다.
- 넓이를 구할 때마다 최대값을 저장
import kotlin.math.max
import kotlin.math.min
class Solution {
fun maxArea(height: IntArray): Int {
var answer: Int = 0
// 가장 바깥쪽 기둥부터 탐색
var left = 0
var right = height.size - 1
while(left < right) {
val area: Int = (right - left) * min(height[left], height[right])
answer = max(answer, area)
// 왼쪽, 오른쪽 중 더 짧은 쪽을 안쪽으로 이동
if(height[left] > height[right]) {
right--
}
else {
left++
}
}
return answer
}
}
< 실패한 풀이 >
// LeetCode - 11. Container With Most Water / Time Limit Exceeded
import kotlin.math.max
import kotlin.math.min
class Solution {
fun maxArea(height: IntArray): Int {
var answer: Int = 0
for(i: Int in 0..(height.size - 2)) {
for(j: Int in (i + 1)..(height.size - 1)) {
val area: Int = (j-i) * min(height[i], height[j])
answer = max(answer, area)
}
}
return answer
}
}
728x90
'Programming > Kotlin' 카테고리의 다른 글
[LeetCode/Kotlin] 24. Swap Nodes in Pairs (0) | 2024.06.26 |
---|---|
[백준/Kotlin] 이모티콘(14226) (0) | 2024.06.24 |
[백준/Kotlin] 점수따먹기(1749) (0) | 2024.05.20 |
[백준/Kotlin] 경사로(14890) (0) | 2024.05.17 |
[백준/Kotlin] 여왕벌(10836) - 서브태스크4 해결 못함 (0) | 2024.05.17 |