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

 

 

 

 

 

ํ’€๋ฉด์„œ ํ™”๋‚˜๋Š” ๋ฌธ์ œ์ด๋‹ค..

ํšŒ์ „ ์ˆ˜๋งŒํผ for๋ฌธ ์„ ๋Œ๋ ค,

์•ˆ์—์„œ โ† , โ†“, โ†’, โ†‘ ๋„ค ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜๋ˆ  ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ฐฉํ–ฅ๋Œ€๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ธ๋ฑ์Šค ๋•Œ๋ฌธ์— ์• ๋ฅผ ๋จน์—ˆ๋‹ค. ํ”„๋ฆฐํŠธ๋ฌธ์„ ์ฐ์–ด๊ฐ€๋ฉฐ ๊ฒฐ๊ณผ๊ฐ’์„ ํ™•์ธํ•˜๋ฉฐ ์กฐ๊ธˆ์”ฉ ๊ณ ์นœ ๋์— ์ •๋‹ต์„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 

 

 

 

 

์‹คํŒจ ์ฝ”๋“œ

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

public class Main {
	static int N, M;
	static int[][] arr;

	public static void main(String[] args) throws 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());
		int R = Integer.parseInt(st.nextToken());
		
		arr = 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 r = 0; r < R; r++) {
			rotate();
		}
		
		
		//์ถœ๋ ฅ
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
		
	}

	public static void rotate() {
		for(int i = 0; i < N / 2; i++) { //ํšŒ์ „ ๋ฌถ์Œ๋งŒํผ ๋ฐ˜๋ณต
			int temp1 = arr[i][M - 1 - i];
			int temp2 = 0;
			
			for(int j = M - 2 - i; j >= i; j--) { //โ† ๋ฐฉํ–ฅ
				temp2 = arr[i][j];
				arr[i][j] = temp1;
				temp1 = temp2;
			}
			
			for(int j = i + 1; j < N - i; j++) { //โ†“ ๋ฐฉํ–ฅ
				temp2 = arr[j][i];
				arr[j][i] = temp1;
				temp1 = temp2;
			}
			
			for(int j = i + 1; j < M - i; j++) { //โ†’ ๋ฐฉํ–ฅ
				temp2 = arr[N - 1 - i][j];
				arr[N - 1 - i][j] = temp1;
				temp1 = temp2;
			}
			
			for(int j = N - 2 - i; j >= i; j--) { //โ†‘ ๋ฐฉํ–ฅ
				temp2 = arr[j][M - 1 - i];
				arr[j][M - 1 - i] = temp1;
				temp1 = temp2;
			}
		}
		
	}

}

 

 

ํšŒ์ „์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์ฃผ๋Š” ๊ฒƒ์„ N/2๋กœ ํ–ˆ๋Š”๋ฐ, ๋ฌด์กฐ๊ฑด N์ด ์•„๋‹ˆ๋ผ M๊ณผ N ์ค‘์— ์ž‘์€ ๊ฐ’์„ ์จ์•ผ ํ•œ๋‹ค. 

 

 

 

 

 

์„ฑ๊ณต ์ฝ”๋“œ

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

public class Main {
	static int N, M;
	static int[][] arr;

	public static void main(String[] args) throws 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());
		int R = Integer.parseInt(st.nextToken());
		
		arr = 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 r = 0; r < R; r++) {
			rotate();
		}
		
		
		//์ถœ๋ ฅ
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < M; j++) {
				sb.append(arr[i][j] + " ");
			}
			sb.append("\n");
		}
		
		System.out.println(sb);
		
	}

	public static void rotate() {
        int d = Math.min(N, M);
        
		for(int i = 0; i < d / 2; i++) { //ํšŒ์ „ ๋ฌถ์Œ๋งŒํผ ๋ฐ˜๋ณต
			int temp1 = arr[i][M - 1 - i];
			int temp2 = 0;
			
			for(int j = M - 2 - i; j >= i; j--) { //โ† ๋ฐฉํ–ฅ
				temp2 = arr[i][j];
				arr[i][j] = temp1;
				temp1 = temp2;
			}
			
			for(int j = i + 1; j < N - i; j++) { //โ†“ ๋ฐฉํ–ฅ
				temp2 = arr[j][i];
				arr[j][i] = temp1;
				temp1 = temp2;
			}
			
			for(int j = i + 1; j < M - i; j++) { //โ†’ ๋ฐฉํ–ฅ
				temp2 = arr[N - 1 - i][j];
				arr[N - 1 - i][j] = temp1;
				temp1 = temp2;
			}
			
			for(int j = N - 2 - i; j >= i; j--) { //โ†‘ ๋ฐฉํ–ฅ
				temp2 = arr[j][M - 1 - i];
				arr[j][M - 1 - i] = temp1;
				temp1 = temp2;
			}
		}
		
	}

}

 

 

 

 

 

 

๊ฒฐ๊ณผ

 

์•„๋ž˜๋Š” ์ถœ๋ ฅ์„ System.out.println()์œผ๋กœ ํ•œ ๊ฒƒ์ด๊ณ , ์œ„์— ๊ฒƒ์€ StringBuilder๋ฅผ ์ด์šฉํ•ด ์ถœ๋ ฅํ•œ ๊ฒƒ์ด๋‹ค.

์ž…๋ ฅ๊ฐ’์ด ํฌ๋ฏ€๋กœ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

giraffe_