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
// 코드
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import java.util.*;
import java.io.*;
public class Main {
static int N, M, R, CNT;
static int[][] arr, temp;
// main
public static void main( String[] args ) throws Exception {
// Please Enter Your Code Here
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( System.out ) );
StringTokenizer st = new StringTokenizer( br.readLine() );
N = Integer.parseInt( st.nextToken() );
M = Integer.parseInt( st.nextToken() );
R = Integer.parseInt( st.nextToken() );
arr = new int[N][];
for ( int i = 0; i < N; ++i ) arr[i] = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 회전해야할 사각형의 개수
CNT = Math.min( N, M ) / 2;
// 주어진 조건만큼 회전시킨다
while ( R --> 0 ) roatate();
// 답을 구한다.
StringBuilder sb = new StringBuilder();
for ( int[] ar1 : arr ) {
for ( int ar2 : ar1 ) sb.append(ar2 + " ");
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
// 회전 메서드
static void roatate() {
temp = new int[N][M];
for ( int i = 0; i < CNT; ++i ) { // 사각형을 모두 돌리는 반복문.
int row = i, col = i;
// 상단 행을 돌린다
for ( ; col < M - i - 1; ++col ) temp[row][col] = arr[row][col + 1];
temp[row][col] = arr[++row][col];
// 우측 열을 돌린다.
for ( ; row < N - i - 1; ++row ) temp[row][col] = arr[row + 1][col];
temp[row][col] = arr[row][--col];
// 하단 열을 돌린다.
for ( ; col > i; --col ) temp[row][col] = arr[row][col - 1];
temp[row][col] = arr[--row][col];
// 좌측 열을 돌린다.
for ( ; row > i; --row ) temp[row][col] = arr[row - 1][col];
} // 사각형을 모두 돌리는 반복문 종료
arr = temp;
}// 회전 메서드 종료
}
|
cs |
반응형
'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글
소수&팰린드롬 (0) | 2021.11.29 |
---|---|
배열 돌리기 2 (0) | 2021.11.24 |
배열 돌리기 3 (0) | 2021.11.22 |
1, 2, 3 더하기 4 (0) | 2021.11.19 |
팰린드롬? (0) | 2021.11.18 |