https://programmers.co.kr/learn/courses/30/lessons/87390
정말 많이 고민했지만 마지막 3개의 테스트케이스가 런타임 에러가 나서 다른사람의 풀이를 참고한 문제.
이 문제는 규칙을 파악해야 하는 문제였다.
그런데 생각보다 간단해서 놀랐다.
일단 2차원 배열의 규칙이 진짜 간단했다.
그냥 행과 열 중에 큰 값 + 1 이 해당 행, 열 안의 값이었다...(충격)
그렇다면 left 와 right 사이에 있는 값을 어떻게 구할 것인가?
만약 n = 5 라면,
5 x 5 = 총 25칸의 2x2 배열에 숫자를 채워넣는다.
이걸 1차원 배열로 만들어도 25칸 배열이다.
만약 left 가 7이라면?
행은 7 / n 을 내림한 값이다.
열은 7 / n 의 나머지다.
그냥 2차원 배열의 가로길이로 나눠주면 되는거였다.
function solution(n, left, right) {
let answer = [];
for (let i = left; i <= right; i++){
let row = Math.floor(i/n);
let col = i % n;
let value = Math.max(row, col) + 1;
answer.push(value);
}
return answer;
}