
결론부터 말하자면 left부터 right의 인덱스까지의 값을 배열로 출력하는 문제다.
먼저 left와 right 사이의 수들이 각각 어느 행과 열을 가지는지 먼저 알아낸 후에 각 행과 열이 가지는 값들을 알아내면 된다.
left와 right 사이의 수들을 순서대로 조회하고 이들을 idx라고 하자.
(idx/n)은 행(row)가 된다.
(idx%n)은 열(col)이 된다.
다음으로는 각 행과 열이 어느 값을 가지고 있는지에 대해 구해야 한다.
행과 열의 각각의 index 중의 최댓값에 1을 더하면 그것이 해당 행과 열의 수가 된다.
import java.util.*;
class Solution {
public int[] solution(int n, long left, long right) {
int size = (int) (right - left + 1);
int[] answer = new int[size];
for (int i = 0; i < size; i ++) {
long idx = i + left;
long row = idx / n;
long col = idx % n;
int num = (int) Math.max(row, col) + 1;
answer[i] = num;
}
return answer;
}
}

문제 자체는 어떻게 행과 열을 구하고, 그 안의 값을 어떻게 구하는지만 파악한다면 정말 쉬운 문제라고 생각한다.
다만 주어진 수들의 타입은 모두 long인데 결과는 int로 내야 해서 그게 귀찮았다.