728x90
반응형
📜 문제 내용
🤔 과정
일단 그리디하게 문제에 주어진대로 의식의 흐름을 따라 그냥 진행했다.
class Solution {
public int[] solution(int n, long left, long right) {
int[][] input = new int[n+1][n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i<=j){
input[i][j] = j;
}else {
input[i][j] = i;
}
}
}
int[] arr = new int[n*n];
int idx = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
arr[idx++] = input[i][j];
}
}
int size = (int)(right - left + 1);
int[] answer = new int[size];
idx = 0;
for(int i=(int)left;i<=(int)right;i++){
answer[idx++] = arr[i];
}
return answer;
}
}
- 결과) 메모리 초과 이슈로 바로 테스트 케이스 광탈
- "입출력 예 설명"에 국한되지 않고 바로 answer 배열에 넣는 방법을 생각했다.
✨ 최종 제출 답안
class Solution {
public int[] solution(int n, long left, long right) {
int size = (int)(right - left + 1);
int[] answer = new int[size];
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;
}
}
- 1 2 3 / 2 2 3 / 3 3 3 이렇게 잘라서 생각해야하며, 규칙을 찾아야한다.
- 배열 문제보다는 수학 문제에 비슷한 문제.
🔗 문제 링크
728x90
반응형