프로그래머스 Level2 : 월간 코드 챌린지 시즌3 n^2 배열 자르기
class Solution {
public int [] solution (int n , long left , long right ) {
int [] answer = new int [(int )(right -left )+1 ];
int index = 0 ;
for (long i = left ; i <=right ; i ++){
answer [index ++] = Math .max ((int )(i /n ),(int )(i %n )) + 1 ;
}
return answer ;
}
}
class Solution {
public int [] solution (int n , long left , long right ) {
int [] answer = new int [(int )(right -left )+1 ];
int sRow = (int )(left /n );
int sCol = (int )(left %n );
int eRow = (int )(right /n );
int eCol = (int )(right %n );
int index = 0 ;
for (int i =sCol ; i <n ; i ++){
if (index >(int )(right -left )) break ;
if (i <sRow ){
answer [index ++] = sRow +1 ;
} else {
answer [index ++] = i +1 ;
}
}
for (int i =sRow +1 ; i <eRow ; i ++){
if (index >(int )(right -left )) break ;
for (int j =0 ; j <i ; j ++){
answer [index ++] = i +1 ;
}
for (int j =i ; j <n ; j ++){
answer [index ++] = j +1 ;
}
}
for (int i =0 ; i <=eCol ; i ++){
if (index >(int )(right -left )) break ;
if (i <eRow ){
answer [index ++] = eRow +1 ;
} else {
answer [index ++] = i +1 ;
}
}
/*
for(int i : answer){
System.out.print(i+" ");
}
*/
return answer ;
}
}