[LeetCode] 334. Increasing Triplet Subsequence
문제 풀이
아이디어
- 증가하는 K(3)개의 수를 찾는 문제로 일반화
- K개의 값이 증가하는 패턴을 찾기
- 그리디 알고리즘으로 접근
K개를 먼저 준비해두고, 0번 인덱스부터 값을 교체해가며 연속하는 배열을 찾아냄
class Solution {
func increasingTriplet(_ nums: [Int]) -> Bool {
// kLengthArray는 현재까지 발견한 k개의 증가하는 수열을 저장
var k = 3
var kLengthArray = Array(repeating: Int.max, count: k - 1)
for num in nums {
for i in 0..<(k - 1) {
if num <= kLengthArray[i] {
kLengthArray[i] = num // 적절한 위치에 값을 넣음
break
}
// 마지막 값보다 더 크면 k개의 수가 완성됨
if i == k - 2 {
return true
}
}
}
return false // k개의 증가하는 수열이 없는 경우
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[LeetCode] 11. Container With Most Water (0) | 2024.10.09 |
---|---|
[LeetCode] 605. Can Place Flowers (0) | 2024.10.09 |
[Swift] BOJ 1516 게임 개발 (0) | 2022.05.24 |
[Swift] BOJ 1766 문제집 (0) | 2022.05.24 |
[Swift] BOJ 2252 줄 세우기 (0) | 2022.05.24 |