[프로그래머스] n^2 배열 자르기 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/87390
입력 : n, left, right, result (1 ≤ n ≤ 10^7, 0 ≤ left ≤ right < n^2, right - left < 10^5)
출력 : 새로운 1차원 배열 arr[] 출력
O(n)
시뮬레이션
처음에는 2차원 배열을 생성했으나, 시간초과가 발생했다. 이후 시뮬레이션 시도를 했다.
2차원 배열을 직접 생성하지 않고, 주어진 범위의 인덱스를 이용해 각 값을 계산하는 방식으로 구현했다.
2차원 배열을 꼭 생성할 필요 없이 1차원 배열만으로도 문제를 풀 수 있다.
시뮬레이션
class Solution {
public int[] solution(int n, long left, long right) {
int length = (int) (right - left + 1);
int[] answer = new int[length];
for (long i = left; i <= right; i++) {
int row = (int) (i / n);
int col = (int) (i % n);
answer[(int) (i - left)] = Math.max(row, col) + 1;
}
return answer;
}
}