Daily LeetCode Challenge - 334. Increasing Triplet Subsequence

Min Young Kim·2022년 10월 11일
0

algorithm

목록 보기
6/198

오늘 문제는 주어진 intArray 에서 index 와 value 모두 증가하는 increasing triplet 을 찾는 문제였다.
이 문제는 처음에 풀기위해서 Map 을 사용하여 key 에 index 를 넣고 value 에 값을 넣은 뒤, 정렬하거나 하는 방법으로 접근했었지만 결국 단순한 방법으로 풀기로 했다.

또한, for 문을 두번 쓰는 방법도 있지만, 그렇게 하면 time complexity 가 O(n2) 가 되어버리기 때문에 지양하고 하였다.

앞에서부터 숫자를 하나씩 보면서 제일 작은 수를 first, 그 다음 작은 수가 나오면 second 에 저장하는 방식으로, 세번째 숫자가 나오면 true 를 return 하고 아니면 false를 return 하는 방식으로 풀었다.

class Solution {
    fun increasingTriplet(nums: IntArray): Boolean {
        var first = Int.MAX_VALUE
        var second = Int.MAX_VALUE

        nums.forEach { num ->
            if (num <= first) first = num
            else if (num <= second) second = num
            else return true
        }
        
        return false
        
    }
}

문제가 통과는 되었지만, [20,100,10,12,5,13] 같은 테스트케이스를 도입해보면,
first 에 5가 들어가고 second 에 12가 들어가서 문제가 요구한대로의 답은 아니지만 통과는 된다...
더 정확한 답을 위해서 조금 더 연구가 필요할거 같다.

profile
길을 찾는 개발자

0개의 댓글