๋ฌธ์
ํฌ๊ธฐ๊ฐ 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]
↓ ↓ ↑ ↑
A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5]
↓ ↑
A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4][5]
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๋ฐฐ์ด์ 2๋ฒ ํ์ ์ํค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ณํ๊ฒ ๋๋ค.
1 2 3 4 2 3 4 8 3 4 8 6
5 6 7 8 1 7 7 6 2 7 8 2
9 8 7 6 → 5 6 8 2 → 1 7 6 3
5 4 3 2 9 5 4 3 5 9 5 4
<์์> <ํ์ 1> <ํ์ 2>
๋ฐฐ์ด๊ณผ ์ ์ R์ด ์ฃผ์ด์ก์ ๋, ๋ฐฐ์ด์ R๋ฒ ํ์ ์ํจ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฐฐ์ด์ ํฌ๊ธฐ N, M๊ณผ ์ํํด์ผ ํ๋ ํ์ ์ ์ R์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋ฐฐ์ด A์ ์์ Aij๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฐ์ด์ R๋ฒ ํ์ ์ํจ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์ ํ
- 2 ≤ N, M ≤ 300
- 1 ≤ R ≤ 1,000
- min(N, M) mod 2 = 0
- 1 ≤ Aij ≤ 108
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
4 4 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
3 4 8 12
2 11 10 16
1 7 6 15
5 9 13 14
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
5 4 7
1 2 3 4
7 8 9 10
13 14 15 16
19 20 21 22
25 26 27 28
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
28 27 26 25
22 9 15 19
16 8 21 13
10 14 20 7
4 3 2 1
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
2 2 3
1 1
1 1
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
1 1
1 1
# ํ์ด ๋ฐฉ๋ฒ
์ฒ์์๋ ๊ฐ ๋ฐ์ด๋ฌ์ค์์ ํผ์ง ์ ์๋ ์์ญ์ ์๋ฅผ ๊ตฌํ ํ์ ๊ทธ๊ฒ ํฐ ๋ฐ์ด๋ฌ์ค๋ฅผ ๋จผ์ ๋ง๊ณ ์ด๋ฐ ์์ผ๋ก ์งํํ๋ ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ทธ๋ ๊ฒ ํ๋ค๋ณด๋ ์ด๋ป๊ฒ ๊ธฐ์ค์ ์ธ์์ผํ ์ง ๋ช ํํ์ง ์์๋ค..
์ฌ๊ธฐ์ ์๊ฐํ๊ฒ ๋ชจ๋ ์๋ฅผ ๋ค ๊ณ ๋ คํด์ผ ํ๋..? ์๊ฐ์ด ๋ค์๋ค.
combination์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ๊ตฌํํด๋๋ค.
๊ณ์ ์ต์ ํํ๋ ค๋ค ๋ณด๋ ์คํ๋ ค ๊ธฐ๋ณธ์ ์ธ ์ฝ๋๋ฅผ ๋์น์ง ์์๋
๋จผ์ ์ด๋ป๊ฒ๋ ์ฝ๋๊ฐ ๋์๊ฐ๊ฒ ํ๊ณ ๊ทธ ๋ค์ ์ต์ ํ๋ฅผ ์๊ฐํ๋ ๋ฐฉํฅ์ผ๋ก ์งํํด๋ณด์.
# ์ฝ๋
1. Layer-by-Layer ์ ๊ทผ์ผ๋ก ์ ํํด๋ผ
- ๋ฐฐ์ด์ ๋ ์ด์ด ๋จ์( ๋ฐ๊นฅ ํ ๋๋ฆฌ ์ ์ฒด)๋ก ์๊ฐํ๋ค.
- ๊ฐ ๋ ์ด์ด๋ ์/์ค๋ฅธ์ชฝ/์๋/์ผ์ชฝ ๋ค ๋ฐฉํฅ์ผ๋ก ์ชผ๊ฐค ์ ์๋ค.
- ๋ฐฉํฅ๋ณ๋ก ์ด๋ ๊ท์น์ ์์ฑํ๋ค.
- ์ ๋ฐฐ์ด(new)์ ๋ง๋ค์ด์ ์ถฉ๋ ์์ด ๊ฐ์ ์ด๋์ํจ๋ค.
- ํ์ํ ๋งํผ ํ์ ๋ฐ๋ณตํ๋ค.
# 2025-04-27 10:21-11:10
import sys
sys.stdin = open("input.txt","r")
def rotate_once(origin, N, M):
new = [[0] * M for _ in range(N)]
layers = min(N, M) // 2
for layer in range(layers):
# ์ผ์ชฝ
for i in range(layer, M - layer - 1):
new[layer][i] = origin[layer][i + 1]
# ์์ชฝ
for i in range(layer, N - layer - 1):
new[i][M - layer - 1] = origin[i + 1][M - layer - 1]
# ์ค๋ฅธ์ชฝ
for i in range(M - layer - 1, layer, -1):
new[N - layer - 1][i] = origin[N - layer - 1][i - 1]
# ์๋์ชฝ
for i in range(N - layer - 1, layer, -1):
new[i][layer] = origin[i - 1][layer]
return new
def rotate(origin, N, M, R):
for _ in range(R):
origin = rotate_once(origin, N, M)
return origin
def main():
N, M, R = map(int, input().split())
origin = [list(map(int, input().split())) for _ in range(N)]
result = rotate(origin, N, M, R)
for row in result:
print(*row)
main()
# ์ฐธ๊ณ (๋๋ฌด ๋ณต์กํ๊ฒ ์๋ํ ์ฒซ ํ์ด)
์ผ/์๋/์ค/์ ์ด๋ ๊ฒ ๋ฐ๋ก ํจ์๋ฅผ ์ ์ํ๊ณ ๋์๊ฐ๋ ์ฝ๋๋ ์๋ง..
# 2025-04-27 10:21-11:10
import sys
sys.stdin = open("input.txt","r")
n, m, r = map(int,sys.stdin.readline().split())
graph = [list(map(int,sys.stdin.readline().split())) for _ in range(n)]
tmp = []
def go_left():
sy = 1; ty = m-1
for i in range(n):
for j in range(sy+i,ty-i+1):
graph[i][j-1] = graph[i][j]
def go_down():
sx = n-2; tx = 0
for j in range(m):
for i in range(sx-j,tx+j-1,-1):
if i == j:tmp.append((i,j,graph[i][j]))
graph[i+1][j] = graph[i][j]
def go_right():
sy = m-2; ty = 0
for i in range(n-1,-1,-1):
tmp_i = n - i
for j in range(sy-tmp_i,ty+tmp_i-1,-1):
graph[i][j+1] = graph[i][j]
def go_up():
sx = 1; tx = n-1
for j in range(m-1,-1,-1):
tmp_j = m - j
for i in range(sx+tmp_j,tx-tmp_j+1):
graph[i-1][j] = graph[i][j]
def turn():
diag = []
for i in range(n):
for j in range(m):
if i == j:
diag.append((i,j,graph[i][j]))
go_left();go_down();go_right();go_up()
for t in tmp:
i,j,g = t
graph[i+1][j] = g
def print_graph():
for i in range(n):
for j in range(m):
print(graph[i][j], end=' ')
print()
def main():
for _ in range(r): turn()
print_graph()
main()
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Silver I] 1283 - ๋จ์ถํค ์ง์ (0) | 2025.05.01 |
---|---|
[Gold V] 21608 - ์์ด ์ด๋ฑํ๊ต (1) | 2025.04.30 |
[Gold IV] 1107 - ๋ฆฌ๋ชจ์ปจ (0) | 2025.04.25 |
[Gold IV] 14502 - ์ฐ๊ตฌ์ (0) | 2025.04.25 |
[Gold V] 15486 - ํด์ฌ2 (0) | 2025.04.20 |