BOJ_S2_16926
๐ [S2_16926] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
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());
}
}
// ๋๋ฆฌ๊ธฐ
while (R != 0) {
// ์์ ๊ฐ์
for (int z = 0; z < (Math.min(N, M) / 2); z++) {
// ํ๋ ๋นผ์ฃผ๋ ์
int first = arr[z][z];
// ์์
for (int i = 0 + z; i < M - 1 - z; i++) {
arr[0 + z][i] = arr[0 + z][i + 1];
}
// ์ค๋ฅธ์ชฝ
for (int i = 0 + z; i < N - 1 - z; i++) {
arr[i][M - 1 - z] = arr[i + 1][M - 1 - z];
}
// ๋ฐ์
for (int i = M - 1 - z; i > 0 + z; i--) {
arr[N - 1 - z][i] = arr[N - 1 - z][i - 1];
}
// ์ผ์ชฝ
for (int i = N - 1 - z; i > 0 + z; i--) {
arr[i][0 + z] = arr[i - 1][0 + z];
}
arr[1 + z][z] = first;
}
R--;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
๐ค ๋์ ์๊ฐ
๋ฐฐ์ด์ ํ ๋ฒ๋ง ์ฎ๊ธฐ๋ ๊ฒ์ด ์๋๋ผ R๋งํผ ์ฎ๊ฒจ์ผ ํ๋ฏ๋ก ์ข ๋ ์๊ฐ์ด ํ์ํ๋ ๋ฌธ์ ์ด๋ค.
๊ทธ๋์ z๋ผ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด ์ฒซ๋ฒ์งธ ๊ฒ๊ป์ง๋ค์ ๋ค ์ฎ๊ธฐ๊ณ ๋๋ฉด ํ๋์ฉ ๋ค ์ค์ด๋ค๊ฒ ํ์ฌ ๊ทธ ๋ค์ ๊ป์ง์ ์ฎ๊ธฐ๊ฒ ํ๋ค.
์ด๊ฒ์ ๋ฐฐ์ด ํฌ๊ธฐ์ ๋ฐ๋งํผ ์ํํด ์ฃผ์๋ค.
๊ป์ง๋ค์ ์ฎ๊ธฐ๋ ๊ฒ์ ์ฒ์์ ์์ํ๋๋ฅผ ๋นผ๊ณ ๊ทธ์๋ฆฌ๋ฅผ ์์์ผ๋ก ์ ์ค๋ฅธ์ชฝ ์๋ ์ผ์ชฝ ์์ผ๋ก ํ ์นธ์ฉ ์ฎ๊ฒจ ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ ๋นผ๋์๋ ์์๋ฅผ ๋ค์ ์ง์ด๋ฃ์ผ๋ฉด ๋ !!
๋ค๋ฅธ ์ฌ๋๋ค ์ค์๋ ์ค์์ ํด๋์ ๊ฒ๋ ์๋๋ฐ ์ค์๋ ์ข์ ๋ฐฉ๋ฒ ์ค ํ๋ ์ธ ๊ฒ ๊ฐ๋ค.