๋ฐ์ํ
๋ฌธ์
https://www.acmicpc.net/problem/16935
16935๋ฒ: ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 3
ํฌ๊ธฐ๊ฐ N×M์ธ ๋ฐฐ์ด์ด ์์ ๋, ๋ฐฐ์ด์ ์ฐ์ฐ์ R๋ฒ ์ ์ฉํ๋ ค๊ณ ํ๋ค. ์ฐ์ฐ์ ์ด 6๊ฐ์ง๊ฐ ์๋ค. 1๋ฒ ์ฐ์ฐ์ ๋ฐฐ์ด์ ์ํ ๋ฐ์ ์ํค๋ ์ฐ์ฐ์ด๋ค. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 →
www.acmicpc.net
ํ์ด
๋ฐฐ์ด ๋๋ฆฌ๋ค๊ฐ ๋ด ๋จธ๋ฆฌ๊ฐ ๋์๊ฐ๋ป,,ํ๋ค
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
/**
* ๋ฐฐ์ด ์ํ ๋ฐ์
*
* @param arr
* @return
*/
public static int[][] upAndDown(int[][] arr) {
for (int i = 0; i < arr.length / 2; i++) {
for (int j = 0; j < arr[0].length; j++) {
int temp = arr[i][j];
arr[i][j] = arr[arr.length - i - 1][j];
arr[arr.length - i - 1][j] = temp;
}
}
return arr;
}
/**
* ๋ฐฐ์ด ์ข์ฐ ๋ฐ์
*
* @param arr
* @return
*/
public static int[][] leftAndRight(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length / 2; j++) {
int temp = arr[i][j];
arr[i][j] = arr[i][arr[0].length - 1 - j];
arr[i][arr[0].length - 1 - j] = temp;
}
}
return arr;
}
/**
* ์ค๋ฅธ์ชฝ์ผ๋ก 90๋ ํ์
*
* @param arr
* @return
*/
public static int[][] right(int[][] arr) {
int[][] newArr = new int[arr[0].length][arr.length];
for (int i = 0; i < arr[0].length; i++) {
for (int j = 0; j < arr.length; j++) {
newArr[i][j] = arr[arr.length - 1 - j][i];
}
}
return newArr;
}
/**
* ์ผ์ชฝ์ผ๋ก 90๋ ํ์
*
* @param arr
* @return
*/
public static int[][] left(int[][] arr) {
int[][] newArr = new int[arr[0].length][arr.length];
for (int i = 0; i < arr[0].length; i++) {
for (int j = 0; j < arr.length; j++) {
newArr[i][j] = arr[j][arr[0].length - 1 - i];
}
}
return newArr;
}
/**
* ๋ฐฐ์ด 4๋ฑ๋ถํด์ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฌ๊ธฐ
*
* @param arr
* @return
*/
public static int[][] quadrantRight(int[][] arr) {
int row = arr[0].length / 2; // ๊ฐ๋ก ๊ธธ์ด
int column = arr.length / 2; // ์ธ๋ก ๊ธธ์ด
int[][] squareArr = new int[column][row];
// 3์ฌ๋ถ๋ฉด ์ ์ฅํ๊ธฐ
for (int i = 0; i < squareArr.length; i++) {
for (int j = 0; j < squareArr[0].length; j++) {
squareArr[i][j] = arr[column + i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < squareArr.length; j++) {
for (int k = 0; k < squareArr[0].length; k++) {
// 0 ์ผ๋๋
if (i == 0) {
arr[column + j][k] = arr[column + j][row + k];
} else if (i == 1) {
// System.out.print(i);
arr[column + j][row + k] = arr[j][row + k];
} else if (i == 2) {
// System.out.println(i);
arr[j][row + k] = arr[j][k];
}
}
}
}
for (int i = 0; i < squareArr.length; i++) {
for (int j = 0; j < squareArr[0].length; j++) {
arr[i][j] = squareArr[i][j];
}
}
return arr;
}
/**
* ๋ฐฐ์ด 4๋ฑ๋ถํด์ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆฌ๊ธฐ
*
* @param arr
* @return
*/
public static int[][] quadrantLeft(int[][] arr) {
int row = arr[0].length / 2; // ๊ฐ๋ก ๊ธธ์ด
int column = arr.length / 2; // ์ธ๋ก ๊ธธ์ด
int[][] squareArr = new int[column][row];
// 3์ฌ๋ถ๋ฉด ์ ์ฅํ๊ธฐ
for (int i = 0; i < squareArr.length; i++) {
for (int j = 0; j < squareArr[0].length; j++) {
squareArr[i][j] = arr[column + i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < squareArr.length; j++) {
for (int k = 0; k < squareArr[0].length; k++) {
// 0 ์ผ๋๋
if (i == 0) {
arr[j + column][k] = arr[j][k];
} else if (i == 1) {
arr[j][k] = arr[j][k + row];
} else if (i == 2) {
arr[j][k + row] = arr[j + column][k + row];
}
}
}
}
for (int i = 0; i < squareArr.length; i++) {
for (int j = 0; j < squareArr[0].length; j++) {
arr[i + column][j + row] = squareArr[i][j];
}
}
return arr;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int r = Integer.parseInt(st.nextToken());
int[][] 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());
}
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < r; i++) {
int num = Integer.parseInt(st.nextToken());
switch (num) {
case 1:
arr = upAndDown(arr);
break;
case 2:
arr = leftAndRight(arr);
break;
case 3:
arr = right(arr);
break;
case 4:
arr = left(arr);
break;
case 5:
arr = quadrantRight(arr);
break;
case 6:
arr = quadrantLeft(arr);
break;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
bw.write(String.valueOf(arr[i][j]) + " ");
}
bw.write("\n");
}
bw.flush();
bw.close();
}
}
์ ๋ต
๋ฐ์ํ
'๐ฐ๐๐๐๐๐๐๐๐ > ๐ฑ๐๐๐๐๐๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/Java] ์ ๊ณฑ์์ ํฉ 1699 (1) | 2023.11.30 |
---|---|
[๋ฐฑ์ค/Java] ๋ํค๋ํค ๊ฐ์๋๋ฆฌ๋ฏธ 12789 (0) | 2023.11.28 |
[๋ฐฑ์ค/Java] ๋ก๋ด ์๋ฎฌ๋ ์ด์ 2174 (1) | 2023.11.26 |
[๋ฐฑ์ค/Java] ๋ฑ 10866 (0) | 2023.11.22 |
[๋ฐฑ์ค/Java] ๋ณตํธํ 9046 (0) | 2023.11.18 |