Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 16926. 배열 돌리기1 본문

acmicpc

[BAEKJOON] 16926. 배열 돌리기1

코드와이 2021. 2. 10. 10:24

 

문제링크

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

 

package acmicpc;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 배열_돌리기1 {
	
	static int[][] arr;
	static int[][] brr;
	static int n;
	static int m;
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		StringBuilder sb = new StringBuilder();
		
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		int r = Integer.parseInt(st.nextToken());
		
		arr = new int[n][m];
		brr = new int[n][m];
		
		for(int i = 0 ; i < n ; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			for(int j = 0 ; j < m ; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		for(int i = 0 ; i < r ; i++) arr = turn(arr);
		
		for(int[] i : arr) {
			for(int j : i) sb.append(j + " ");
			sb.append("\n");
		}
		System.out.println(sb);
	}
	
	public static int[][] turn(int[][] a) {
		
		int r1 = 0;
		int r2 = n - 1;
		int c1 = 0;
		int c2 = m - 1;
		
		while( r1 < r2 && c1 < c2) {
			
			for(int i = r1 + 1 ; i <= r2 ; i++) brr[i][c1] = arr[i - 1][c1];
			for(int i = r2 - 1 ; i >= r1 ; i--) brr[i][c2] = arr[i + 1][c2];
			for(int j = c1 ; j <= c2 - 1 ; j++) brr[r1][j] = arr[r1][j + 1];
			for(int j = c2 ; j >= c1 + 1 ; j--) brr[r2][j] = arr[r2][j - 1];
			
			r1++;
			r2--;
			c1++;
			c2--;
			if(r1 == r2 || c1 == c2) {
				brr[r1][c1] = arr[r1][c1];
				brr[r1][c2] = arr[r1][c2];
				brr[r2][c2] = arr[r2][c2];
				brr[r2][c1] = arr[r2][c1];
			}
		}
		return brr;
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 17478.재귀함수가 뭔가요?  (0) 2021.02.10
[BAEKJOON] 1072. 게임  (0) 2021.02.10
[BAEKJOON] 2563. 색종이  (0) 2021.02.10
[BAEKJOON] 1158. 요세푸스 문제  (0) 2021.02.08
[BAEKJOON] 1244. 스위치 켜고 끄기  (0) 2021.02.06