์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋งํฌ๋ค์ด
- Stack
- ๋ธ๋ฃจํธํฌ์ค
- Markdown
- Greedy
- ์ ์ ์ค๋ ๋
- BFS
- ๋น๋ํจํด
- github
- DP
- g1gc
- ํ๋ก์ธ์ค
- ๊ทธ๋ํ ํ์
- GC
- ํ๊ณ
- ์ด์งํ์
- ๋ถํ ์ ๋ณต
- ๋ชฌํฐํ
- ๊ทธ๋ํํ์
- Python
- ๋ฌธ์ ํ์ด
- ๋ฉด์ ๋ณต๊ธฐ
- ๊ทธ๋ฆฌ๋
- ๋ฐฑ์ค
- springboot
- GarbageCollector
- ๊ตฌํ
- ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ1
- ์ ์๋ก
- deque
- Today
- Total
FeelingXD
[๋ฐฑ์ค - 16926] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 ๐ ๋ณธ๋ฌธ
โ Problem
๐ค How
๋ค์ฐจ์ ๋ฐฐ์ด์ ๋๋ ค์ผํ๋ ๋ฌธ์ ๊ฐ ๋์จ๋ค๋ฉด ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณต์ฌ ํ ์ด๋ ์์น์๋ฐ๋ฅธ ์์ง์์ ์๊ฐํ๋ ํธ์ด๋ค. ๋ณต์ฌํ๋ ๊ณผ์ ์์ ๊ณต๊ฐ๋ณต์ก๋์ ์๊ฐ๋ณต์ก๋๋ฅผ ์๋ชจ ํ ์ ์์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฌํ ํ์ด๋ฅผ ์ ํธํ๋ค.
๋ฌธ์ ๋ง ์ฝ์ด๋ณด๋ฉด ์ ๋ง ์ง๊ด์ ์ธ ๋ฌธ์ ์ด๋ค. ๋จ์ํ ๋ฐฐ์ด์ ๋๋ ค์ ๋ง๋ค์ด์ง๋ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ ๋ฌธ์ . ํด๊ฒฐํ๊ธฐ ์ํ ํน์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๊ธฐ๋ณด๋ค๋ ์ง๊ด์ ์ผ๋ก ์ฝ๊ณ ๊ตฌํ์ ํฌ์ปค์ค๋ฅผ ๋ง์ถ๋ ๋ฌธ์ ์ด๋ค.
๊ฐ๋จํ๊ฒ ํต์ฌ์ด๋๋ ๋ฐฐ์ด์ ๋๋ฆฌ๋ ์ฝ๋์๋ํด์๋ง ์ถ๊ฐ์ ์ผ๋ก ์ค๋ช ํ๊ณ ์ ํ๋ค.
def rotate_board(board, round):
global M, N
copy_board = [line[:] for line in board]
square = min(M, N)
# ๋ณด์
M -= 1
N -= 1
for r in range(round): # ๋ผ์ด๋ ๋งํผํ์
if r: # ํ์ ์๊ฐ 0์ด์๋๋ฉด copy_board ๋ณต์ฌํ๊ธฐ
board = [line[:] for line in copy_board]
for i in range(square // 2):
for x in range(M - i, i, -1):
copy_board[i][x - 1] = board[i][x]
for y in range(i, N - i):
copy_board[y + 1][i] = board[y][i]
for x in range(i, M - i):
copy_board[N - i][x + 1] = board[N - i][x]
for y in range(N - i, i, -1):
copy_board[y - 1][M - i] = board[y][M - i]
return copy_board
๋ฐฐ์ด ๋๋ฆฌ๋ ํจ์
๐ค - ์ M ๊ณผ N ์ -1 ํด์ค์ผ๋ก์จ ๋ณด์ ํ๋์ ?
โจ - ๋ฌธ์ ์๊ตฌ์ฌํญ์์ ๋ฐฐ์ด์ ์ฒ์์์์ 1,1 ๋ก ํํํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ๋๋ถ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ (์ฌ๊ธฐ์๋ python ์ ์ฌ์ฉ) ๋ฐฐ์ด์ 0 ๋ถํฐ ์์ํ๊ธฐ์ ๊ฐ -1 ์ ํด์ค์ผ๋ก ์จ ๋ณด์ ํ์ต๋๋ค.
โ Solve
# ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1
import sys
input = sys.stdin.readline
def get_board(rows):
return [list(map(int, input().split())) for _ in range(rows)]
def rotate_board(board, round):
global M, N
copy_board = [line[:] for line in board]
square = min(M, N)
# ๋ณด์
M -= 1
N -= 1
for r in range(round): # ๋ผ์ด๋ ๋งํผํ์
if r: # ํ์ ์๊ฐ 0์ด์๋๋ฉด copy_board ๋ณต์ฌํ๊ธฐ
board = [line[:] for line in copy_board]
for i in range(square // 2):
for x in range(M - i, i, -1):
copy_board[i][x - 1] = board[i][x]
for y in range(i, N - i):
copy_board[y + 1][i] = board[y][i]
for x in range(i, M - i):
copy_board[N - i][x + 1] = board[N - i][x]
for y in range(N - i, i, -1):
copy_board[y - 1][M - i] = board[y][M - i]
return copy_board
def print_board(board):
for line in board:
print(*line)
def solution():
global N, M
N, M, R = map(int, input().split()) # ์ธ๋ก,๊ฐ๋ก,ํ์
board = get_board(N)
board = rotate_board(board, R)
print_board(board)
pass
if __name__ == "__main__": # ์คํ๋๋ ๋ถ๋ถ
solution()
pass