오늘 문제는 주어진 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가 들어가서 문제가 요구한대로의 답은 아니지만 통과는 된다...
더 정확한 답을 위해서 조금 더 연구가 필요할거 같다.