문제
해당 문제는 인덱스 계산을 활용해 문제를 해결했습니다.
문제를 해결하기 위한 핵심은 (x, y) 좌표에서 x, y 중 더 큰 값을 인덱스 요소로 정한다는 것입니다. 해당 원리를 이용한다면 손쉽게 2차원 배열을 만들 수 있습니다.
하지만, 전체 결과를 조회하는 것이 아닌 left와 right 사이를 탐색하는 것이기 때문에 탐색 구간 left와 right로 설정했습니다.
인덱스를 통해 행과 열을 구하는 방법은 다음과 같습니다.
long row = i / n + 1; // 행
long col = i % n + 1; // 열
import java.util.*;
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int) (right - left) + 1];
int idx = 0;
for (long i = left; i<=right; i++) {
long row = i / n + 1;
long col = i % n + 1;
answer[idx++] = (int)Math.max(row, col);
}
return answer;
}
}
✏️ TIP
1 . left와 right가 long 타입으로 주어지기 때문에 형 변환에 신경을 써야합니다.
2. Math.max
를 활용하여 행과 열중 최대값을 도출했습니다.
피드백 및 개선점은 댓글을 통해 알려주세요😊