😎풀이

  1. 백트레킹을 활용하여 특정 순열이 조건을 만족하지 못한다면 빠른 포기
  2. n까지의 길이를 갖춘 순열이라면, Beautiful 처리
  3. 1 ~ n까지의 수로 이루어진 순열 중 Beautiful한 순열의 수 반환
function countArrangement(n: number): number {
    const visited = Array(n + 1).fill(false)
    let beautifuls = 0
    function backTrack(pos: number) {
        if(pos > n) {
            beautifuls++
            return
        }
        for(let num = 1; num <= n; num++) {
            if(visited[num]) continue
            if(num % pos !== 0 && pos % num !== 0) continue
            visited[num] = true
            backTrack(pos + 1)
            visited[num] = false
        }
    }
    backTrack(1)
    return beautifuls
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글