https://school.programmers.co.kr/learn/courses/30/lessons/87390?language=javascript
function solution(n, left, right) {
let result = [];
while(left <= right){
result.push(Math.max(Math.floor(left / n), left++ % n) + 1);
}
return result;
}
n은 3, left는 2, right는 5로 예를 들겠습니다.
123223333 입니다. (보기 쉽게 만들기 위해서 [1,2,3,2,2,3,3,3,3])
[3,2,2,3]는 left 2, right 5까지의 값입니다.
이를 알기 위해서는 사진 속 배열값을 체크했을 때 (r,c)에 들어가는 숫자값은 Math.max(Math.floor(left / n), left++ % n) + 1); 을 통해 구할 수 있습니다.
(아시겠지만, left++ 한 이유는 while문 돌리기 위해서..)
[3,2,2,3]에 대한 좌표를 구하기 위해서 r = Math.floor(left / n) c = left % n 을 실시했습니다.
계산을 직접 돌려보면 Math.max(Math.floor(2 / 3), 2 % 3) + 1);
(0, 2)가 Math.max로 인해 2만 출력했고 2라는 값에 1을 더해 result에 push합니다.
result = [3];
left++했기 때문에 left는 이제 3입니다.
Math.max(Math.floor(3/3), 3 % 3) + 1);
(1, 0)가 나왔고 Math.max로 1만 출력합니다. 마지막 +1로 인해 2가됐고 result에 push합니다.
result = [3, 2];
위와 같이 진행하면 쉽게 해결할 수 있습니다.
하지만 위 r,c 구하는 방법 조차 몰랐던 저는.. 검색을 통해 해결했습니다.