grayCode를 구하는 방법을 알면 풀이가 간단한 문제이다.
각 step(n
)에서 이전 시퀀스에 2^(n-1)을 더해 추가하는 것이 현재 시퀀스가 되는 구조이다.
function grayCode(n: number): number[] {
if(n === 1) return [0, 1]
// 이전 grayCode 가져오기
const prevSequence = grayCode(n - 1)
const result = [...prevSequence]
for(let i = prevSequence.length - 1; i >= 0 ; i--) {
// 기존 시퀀스의 역순에 2^(n-1)을 더해 추가
result.push(prevSequence[i] | (1 << n - 1))
}
return result
};