😎풀이

  1. 투 포인터를 활용하여 1 ~ n까지의 숫자에서 최소와 최댓값을 번갈아가며 k번 배치
  2. 남은 숫자들은 1의 중복된 차잇값을 갖도록 마지막 숫자에서 오름차 순 혹은 내림차 순으로 배치
  3. 배열 반환
function constructArray(n: number, k: number): number[] {
    let left = 1
    let right = n
    const arr: number[] = []
    for(let i = 0; i < k; i++) {
        if(i % 2 === 0) {
            arr.push(left++)
        } else {
            arr.push(right--)
        }
    }
    if(k % 2 === 1) {
       while(left <= right) arr.push(left++)
    } else {
        while(left <= right) arr.push(right--)
    }
    return arr
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글