본문 바로가기
알고리즘/백준

[Java] 백준16926_배열돌리기 1

by 댕꼬 2022. 4. 2.
728x90

https://www.acmicpc.net/problem/16926

 

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

 

[문제]

[입력]

4 4 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

 

[출력]

3 4 8 12
2 11 10 16
1 7 6 15
5 9 13 14

 

package day05.ws;

import java.util.Scanner;

public class BJ16926 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // 행
		int M = sc.nextInt(); // 열
		int R = sc.nextInt(); // 회전

		int[][] arr = new int[N][M];

		for (int i = 0; i < N; i++) {
			for (int j = 0; j < M; j++) {
				arr[i][j] = sc.nextInt();
			}
		}

		int square = Math.min(M, N) / 2; // 회전해야 하는 사각형 갯수

		for (int r = 0; r < R; r++) { // 회전횟수체크
			for (int i = 0; i < square; i++) {
				// 사각형갯수 체크
				int temp = arr[i][i]; 

				for (int j = i + 1; j < M - i; j++)		//좌
					arr[i][j - 1] = arr[i][j];

				for (int j = i + 1; j < N - i; j++)		//상
					arr[j - 1][M - 1 - i] = arr[j][M - 1 - i];

				for (int j = M - 2 - i; j >= i; j--)//우
					arr[N - 1 - i][j + 1] = arr[N - 1 - i][j];

				for (int j = N - 2 - i; j >= i; j--)//하
					arr[j + 1][i] = arr[j][i];

				arr[i + 1][i] = temp;
			}
		}

		for (int[] r : arr) {
			for (int c : r) {
				System.out.print(c + " ");
			}
			System.out.println();
		}
		sc.close();

	}

}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

[Java] 백준4485_녹색옷입은애가젤다지  (0) 2022.04.07
[Java] 백준2531_회전초밥  (0) 2022.04.06
[Java] 백준1463_1로만들기  (0) 2022.03.31
[Java]백준1149_RGB거리  (0) 2022.03.31
[Java] 백준2493_탑문제  (0) 2022.03.16

댓글