코테 공부
배열 돌리기 1(백준 16926번, 자바)
DaEun_
2023. 2. 15. 08:39
16926번: 배열 돌리기 1 (acmicpc.net)
16926번: 배열 돌리기 1
크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5]
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] s;
static int N,M,K;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
N=Integer.parseInt(st.nextToken());
M=Integer.parseInt(st.nextToken());
K=Integer.parseInt(st.nextToken());
s=new int[N][M];
for(int i=0;i<N;i++) {
StringTokenizer st2=new StringTokenizer(br.readLine());
for(int j=0;j<M;j++) {
s[i][j]=Integer.parseInt(st2.nextToken());
}
}
int minn=Math.min(N/2, M/2); //회전 사각형 개수
for(int j=0;j<K;j++) {
for(int i=0;i<minn;i++) {
rotate(i);
}
}
print();
}
static void rotate(int x) {
int temp=s[x][x];
for(int i=x;i<M-1-x;i++) { //위
s[x][i]=s[x][i+1];
}
for(int i=x;i<N-1-x;i++) { //오른쪽
s[i][M-1-x]=s[i+1][M-1-x];
}
for(int i=M-1-x;i>x;i--) {//아래
s[N-1-x][i] =s[N-1-x][i-1];
}
for(int i=N-1-x;i>x;i--) {왼쪽
s[i][x]=s[i-1][x];
}
s[1+x][x]=temp;
}
static void print() {
for(int[] ss: s) {
for(int sss: ss)System.out.print(sss+" ");
System.out.println();
}
}
}