Absolute Permutation

sun202x·2022년 8월 5일
0

알고리즘

목록 보기
4/49

사이트: HackerRank
난이도: 미디움

문제

주어진 자연수 상한선까지 일정한 차이(|pos[i] - i| = k)를 만들어주는 사전적으로 최소단위의 순열을 반환하는 문제이다.

1. 나의 풀이

최소 단위의 순열을 구하기 위해서는 먼저 작은 수부터 넣을 필요가 있다. 조건에 맞을 경우 반환할 순열 P에 넣어놓고, 이미 넣어놓은 값은 제외시키기 위해 Set을 이용해 기록하기로 했다.

function absolutePermutation(n, k) {
    // Write your code here
    const used = new Set();
    const P = [];
    
    const addP = (v) => {
        P.push(v);
        used.add(v);
    }
    
    // position
    for (let i = 1; i <= n; i++) {
        if (i - k > 0 && !used.has(i - k)) {
            addP(i - k);
        } else if (i + k <= n && !used.has(i + k)) {
            addP(i + k);
        } else {
            return [-1];
        }
    }
    
    return P;
}

2. 다른사람의 풀이

바로 풀 수 있었던 문제들은 지금은 생략하고 추후 더 효율적인 문제 풀이법을 찾아보도록 하겠다.

(댓글로 알려주시면 정말 감사하겠습니다 ㅠㅠ)

profile
긍정적으로 살고 싶은 개발자

0개의 댓글