Algorithm/java
[Java][프로그래머스] n^2 배열 자르기
현이승
2023. 5. 4. 15:29
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right-left)+1];
for(int i=0; i<answer.length; i++){
int x = (int) (left/n) +1;
int y = (int) (left%n) +1;
left++;
answer[i] = Math.max(x, y);
}
return answer;
}
}
처음 진행할 때 2차원 배열을 선언하고 값을 다 넣은뒤 진행하였는데 시간초과, 메모리초과가 떴다.
이를 해결하기 위해 left, right에 해당하는 값만을 계산하여 넣는 방식으로 진행하였다.
여기서 2차원 배열의 값은 (x, y) 라고 가정했을 때 x+1 과 y+1중 큰값 이라는 것이다
1 (0,0) | 2 (0,1) | 3 (0,2) | 4 (0,3) |
2 (1,0) | 2 (1,1) | 3 (1,2) | 4 (1,3) |
3 (2,0) | 3 (2,1) | 3 (2,2) | 4 (2,3) |
4 (3,0) | 4 (3,1) | 4 (3,2) | 4 (3,3) |
Math.max() 함수를 이용하여 해당 값을 구하고 left를 1씩 증가시킴으로써 원하는 answer을 구할 수 있다.