레벨: 2
언어: 자바(Java)
해당 문제는 2차원배열에서 i or j 값이 해당값일시 그값은 배열에 대입후
1차원배열로 변환한 다음에 주어진 범위의 배열값을 도출하는 문제입니다..
배열을 만들고 해당값을 도출하면 시간초과가 되어서
해당문제를 접근할때는 해당범위를 이용해서 그값을 역으로 도출하는식으로 가야됩니다.
이런 방식으로 풀었습니다.
좋아요 가장많이 받은코드는 stream 이용했는데 쩝 생각해보니
stream으로 하면 더 간결하겠다는 생각이 들었습니다 ㅎㅎㅎ
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right - left) + 1];
for(int idx = 0; left <= right; idx++, left++) {
answer[idx] = (int) Math.max(left / n, left % n) + 1;
}
return answer;
}
}
import java.util.Arrays;
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();
}
}