[Programmers/JAVA] n^2 배열 자르기
2023. 2. 17. 18:01ㆍ자바/프로그래머스
내 코드
import java.util.*;
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer= new int[(int)(right-left)+1];
//첫 행 list만들기
int[] list=new int[n];
for(int i=1; i<=n; i++) {
list[i-1]=i;
}
//{몫, 나머지} 몫은 행이되고 나머지는 열이됨.
int[] left_array=new int[] {(int)(left/n), (int)(left%n)};
int[] right_array=new int[] {(int)(right/n), (int)(right%n)};
int answer_index=0;
while(true) {
//n번째 행은 list[0]~list[n-1]까지 숫자가 똑같기 때문에 행이 바뀔때마다 list만들어줌.
for(int i=0; i<left_array[0]; i++) {
list[i]=list[left_array[0]];
}
if(right_array[0]==left_array[0]) {//행이 같을때
for(int i=left_array[1]; i<=right_array[1]; i++) {
answer[answer_index]=list[i];
answer_index++;
}
break;
}
//행이 같지 않을때
for(int i=left_array[1]; i<list.length; i++) {
answer[answer_index]=list[i];
answer_index++;
}
left_array[1]=0;
left_array[0]++;
}
return answer;
}
}
느낀점
잘짰다고 생각했는데 다른 사람들이 짠걸 보고나니까 전혀 아닐때의 기분이란...!!
좀만 더 생각했으면 더 좋게 짤 수 있었을텐데 아쉽다.
list에 전체 코드를 넣으면 long으로 넘어가버려서 런타임에러가 날 것같았다. 그래서 나는 첫번째 행만을 만들어서 그걸 바꿔가면서 answer에 넣어주는 방법을 택했다.
하다보면 나도 더 나아지겠지?
'자바 > 프로그래머스' 카테고리의 다른 글
[Programmers/JAVA] 프린터 (0) | 2023.02.20 |
---|---|
[Programmers/JAVA] 귤 고르기 (0) | 2023.02.20 |
[Programmers/JAVA] 기능개발 (0) | 2023.02.16 |
[Programmers/JAVA] [1차] 캐시 (0) | 2023.02.15 |
[Programmers/JAVA] 위장 (0) | 2023.02.14 |