Skip to content

Commit 2082c6b

Browse files
committed
[Gold V] Title: 배열 돌리기 1, Time: 584 ms, Memory: 32120 KB -BaekjoonHub
1 parent ac9b018 commit 2082c6b

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# [Gold V] 배열 돌리기 1 - 16926
2+
3+
[문제 링크](https://www.acmicpc.net/problem/16926)
4+
5+
### 성능 요약
6+
7+
메모리: 32120 KB, 시간: 584 ms
8+
9+
### 분류
10+
11+
구현
12+
13+
### 제출 일자
14+
15+
2026년 3월 31일 12:45:28
16+
17+
### 문제 설명
18+
19+
<p>크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다.</p>
20+
21+
<pre>A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5]
22+
↓ ↑
23+
A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5]
24+
↓ ↓ ↑ ↑
25+
A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5]
26+
↓ ↑
27+
A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4][5]</pre>
28+
29+
<p>예를 들어, 아래와 같은 배열을 2번 회전시키면 다음과 같이 변하게 된다.</p>
30+
31+
<pre>1 2 3 4 2 3 4 8 3 4 8 6
32+
5 6 7 8 1 7 7 6 2 7 8 2
33+
9 8 7 6 → 5 6 8 2 → 1 7 6 3
34+
5 4 3 2 9 5 4 3 5 9 5 4
35+
<시작> <회전1> <회전2></pre>
36+
37+
<p>배열과 정수 R이 주어졌을 때, 배열을 R번 회전시킨 결과를 구해보자.</p>
38+
39+
### 입력
40+
41+
<p>첫째 줄에 배열의 크기 N, M과 수행해야 하는 회전의 수 R이 주어진다.</p>
42+
43+
<p>둘째 줄부터 N개의 줄에 배열 A의 원소 A<sub>ij</sub>가 주어진다.</p>
44+
45+
### 출력
46+
47+
<p>입력으로 주어진 배열을 R번 회전시킨 결과를 출력한다.</p>
48+
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.StringTokenizer;
5+
6+
public class Main {
7+
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringTokenizer st = new StringTokenizer(br.readLine());
11+
StringBuilder sb = new StringBuilder();
12+
int N = Integer.parseInt(st.nextToken());
13+
int M = Integer.parseInt(st.nextToken());
14+
int R = Integer.parseInt(st.nextToken());
15+
16+
int[][] numArr = new int[N][M];
17+
18+
// 2차원 배열 초기화
19+
for (int i = 0; i < N; i++) {
20+
st = new StringTokenizer(br.readLine());
21+
for (int j = 0; j < M; j++) {
22+
numArr[i][j] = Integer.parseInt(st.nextToken());
23+
}
24+
}
25+
26+
for (int i = 0; i < R; i++) {
27+
for (int j = 0; j < Math.min(N, M) / 2; j++) {
28+
int temp = numArr[j][j];
29+
30+
for (int k = j; k < M - j - 1; k++) {
31+
numArr[j][k] = numArr[j][k+1];
32+
}
33+
34+
for (int k = j; k < N - 1 - j; k++) {
35+
numArr[k][M - j -1] = numArr[k + 1][M - j - 1];
36+
}
37+
38+
for (int k = M - j - 1; k > j; k--) {
39+
numArr[N - 1 -j][k] = numArr[N - 1 -j][k - 1];
40+
}
41+
42+
for (int k = N - j -1; k > j; k--) {
43+
numArr[k][j] = numArr[k - 1][j];
44+
}
45+
46+
numArr[j + 1][j] = temp;
47+
}
48+
}
49+
50+
for (int i = 0; i < N; i++) {
51+
for (int j = 0; j < M; j++) {
52+
sb.append(numArr[i][j]).append(" ");
53+
}
54+
55+
sb.append("\n");
56+
}
57+
58+
System.out.println(sb);
59+
}
60+
}

0 commit comments

Comments
 (0)