
내가 작성한 코드
class Solution {
public int[] solution(int n, long left, long right) {
// 구간의 크기 계산 (left~right까지의 원소 개수)
int size = (int)(right - left + 1);
// 결과를 담을 배열 생성
int[] answer = new int[size];
// left~right 구간의 각 인덱스에 대해 값 계산
for (int idx = 0; idx < size; idx++) {
long pos = left + idx; // 전체 배열에서의 실제 위치
int row = (int)(pos / n); // 2차원 배열의 행 인덱스
int col = (int)(pos % n); // 2차원 배열의 열 인덱스
// 규칙에 따라 값 할당: (행, 열 중 큰 값) + 1
answer[idx] = Math.max(row, col) + 1;
}
// 결과 반환
return answer;
}
}
다른 사람의 코드
import java.util.stream.LongStream;
class Solution {
public int[] solution(int n, long left, long right) {
return LongStream.rangeClosed(left, right).mapToInt(value -> (int) (Math.max(value / n, value % n) + 1)).toArray();
}
}
Share article