
주어진 자연수 n의 n행 n열 2차원 배열을 만들어 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채워 n까지 반복한다. 그리고 이를 1차원 배열로 만들어 주어진 인덱스만큼 잘라낸 값을 리턴하면 된다.
처음에 2차원 배열로 명시되어 있어서 2차원 배열을 만들었으나
function solution(n, left, right) {
var answer = new Array(n).fill('').map(ele => new Array(n).fill(''))
let output = answer.map((array, index) => {
return array.map((ele, idx) => index <= idx ? idx + 1 : index + 1)
}).flat()
return output.slice(left, right + 1)
}

ㅎㅎ.. 저 에러는 메모리를 초과하면 나오는 에러라고 한다
다시 생각하다가 몫과 나머지의 관계를 통해 풀 수 있었다.
function solution(n, left, right) {
var answer = new Array(n * n).fill('')
let output = answer.map((ele, idx) => {
return idx % n <= parseInt(idx / n) ? parseInt(idx / n) + 1 : idx % n + 1
})
return output.slice(left, right + 1)
}
이차원 배열이 일차원 배열로 변했을 때 같은 행이었는지 구분하는 방법은 동일한 몫이 나온 경우이다. 여기서 나머지 값과 비교를 하여 몫보다 작으면 고정된 값을, 몫보다 커지는 순간부터 나머지에서 키워나가면 된다.

헤헤 그래도 나아졌다
내 알고리즘이 맞는 것 같은데 계속 런타임이 나서 어차피 두 번째, 세 번째 파라미터가 인덱스 값이기 때문에 slice()를 이용하지 말고 바로 파라미터에 해당하는 배열을 바로 구해서 풀었다
function solution(n, left, right) {
let answer = []
for (let i = left; i <= right; i++) {
i % n <= parseInt(i / n) ? answer.push(parseInt(i / n) + 1) : answer.push(i % n + 1)
}
return answer
}

훨 나아졌다 ^_^