😎풀이

  1. 숫자 배열이 엄격한 오름차 순인지 판별하는 isInc 정의
  2. 숫자 배열이 엄격한 내림차 순인지 판별하는 isDec 정의
  3. nums 2중순회
    3-1. 0부터 p까지의 범위가 오름차 순이며, 2개 이상의 요소인지 판별
    3-2. p부터 q까지의 범위가 내림차 순이며, 2개 이상의 요소인지 판별
    3-3. q부터 n - 1까지의 범위가 오름차 순이며, 2개 이상의 요소인지 판별
    3-4. numsTrionic 배열이므로, true 반환
  4. numsTrionic 배열이 아니므로, false 반환
function isTrionic(nums: number[]): boolean {
    const n = nums.length
    for(let p = 0; p < n - 2; p++) {
        const pRange = nums.slice(0, p + 1)
        if(!isInc(pRange) || pRange.length < 2) continue
        for(let q = p + 1; q < n - 1; q++) {
            const qRange = nums.slice(p, q + 1)
            if(!isDec(qRange) || qRange.length < 2) continue
            const rRange = nums.slice(q)
            if(!isInc(rRange) || rRange.length < 2) continue
            console.log({pRange, qRange, rRange})
            return true
        }
    }
    return false
};

function isInc(nums: number[]) {
    for(let i = 1; i < nums.length; i++) {
        if(nums[i] <= nums[i - 1]) return false
    }
    return true
}

function isDec(nums: number[]) {
    for(let i = 1; i < nums.length; i++) {
        if(nums[i] >= nums[i - 1]) return false
    }
    return true
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글