1. 문제
https://www.acmicpc.net/problem/16935
2. 풀이 과정
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static String map[][];
static int N, M;
public static void oper1() {//1. 상하 반전
for(int i=0;i<N/2;i++) {
String[] s = Arrays.copyOf(map[i], M);
map[i] = map[N-1-i];
map[N-1-i] = s;
}
}
public static void oper2() {//2. 좌우 반전
for(int i=0;i<M/2;i++) {
for(int j=0;j<N;j++) {
String temp = map[j][i];
map[j][i] = map[j][M-1-i];
map[j][M-1-i] = temp;
}
}
}
public static void oper3() {//3. => 90도 회전
String[][] s = new String[M][N];
for(int i=0;i<N;i++) {
for(int j=0;j<M;j++) {
s[j][N-1-i] = map[i][j];
}
}
map = s;
int temp = N;
N = M;
M = temp;
}
public static void oper4() {//4. <= 90도 회전
String[][] s = new String[M][N];
for(int i=0;i<N;i++) {
for(int j=0;j<M;j++) {
s[M-1-j][i] = map[i][j];
}
}
map = s;
int temp = N;
N = M;
M = temp;
}
public static void oper5() {//5. 4개의 그룹 - 시계방향 회전
//N, M은 짝수
//1 2
//4 3
String temp;
for(int i=0;i<N/2;i++) {
for(int j=0;j<M/2;j++) {
temp = map[i][j];
map[i][j] = map[N/2+i][j];
map[N/2+i][j] = map[N/2+i][M/2+j];
map[N/2+i][M/2+j] = map[i][M/2+j];
map[i][M/2+j] = temp;
}
}
}
public static void oper6() {//6. 4그룹 - 반시계방향 회전
//1 2
//4 3
String temp;
for(int i=0;i<N/2;i++) {
for(int j=0;j<M/2;j++) {
temp = map[i][j];
map[i][j] = map[i][M/2+j];
map[i][M/2+j] = map[N/2+i][M/2+j];
map[N/2+i][M/2+j] = map[N/2+i][j];
map[N/2+i][j] = temp;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
int R = sc.nextInt();
map= new String[N][M];
sc.nextLine();
//입력
for(int i=0;i<N;i++) {
map[i] = sc.nextLine().split(" ");
}
//연산
for(int i=0;i<R;i++) {
switch(sc.nextInt()) {
case 1:
oper1();
break;
case 2:
oper2();
break;
case 3:
oper3();
break;
case 4:
oper4();
break;
case 5:
oper5();
break;
case 6:
oper6();
break;
}
}
//출력
for(int i=0;i<N;i++) {
for(int j=0;j<M;j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
}
}
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Java] 백준 17135번 : 캐슬 디펜스 (0) | 2022.03.16 |
---|---|
[Java] 백준 15686 : 치킨 배달 (0) | 2022.02.23 |
[Python_DynamicProgramming] 백준 11727번 : 2xn 타일링 2 (0) | 2021.12.04 |
[Python_DFS&BFS] 백준 16236번 : 아기 상어 (0) | 2021.12.01 |
[Python_DFS&BFS] 백준 2206번 : 벽 부수고 이동하기 (0) | 2021.11.16 |