728x90
문제
세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다.
이 배열의 테두리가 시계방향으로 한 칸 씩 밀린 배열을 출력하여라.
여기서 테두리란 배열의 상하좌우 끝 줄을 의미한다.
입력
첫 줄에 N, M 이 주어진다.
두 번째 줄부터 N 줄에 걸쳐 각 줄에 M 개씩 배열의 수가 주어진다.
(3 ≤ N, M ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ N x M)
출력
밀기가 끝난 배열을 출력한다.
입력의 예 1
3 5
2 3 1 1 4
1 3 2 3 4
1 2 7 3 7
출력의 예 1
1 2 3 1 1
1 3 2 3 4
2 7 3 7 4
입력의 예 2
4 4
1 2 4 2
3 4 1 7
8 3 1 6
9 8 9 7
출력의 예 2
3 1 2 4
8 4 1 2
9 3 1 7
8 9 7 6
입력의 예 3
3 5
1 3 4 2 4
1 2 5 8 7
6 4 5 2 7
출력의 예 3
1 1 3 4 2
6 2 5 8 4
4 5 2 7 7
입력의 예 4
6 5
7 1 3 5 4
2 3 4 8 3
2 1 4 7 9
9 8 5 3 1
2 3 6 7 4
1 4 3 2 5
출력의 예 4
2 7 1 3 5
2 3 4 8 4
9 1 4 7 3
2 8 5 3 9
1 3 6 7 1
4 3 2 5 4
#코드
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
|
import sys
# 세로 길이 N, 가로 길이 M 인 2차원 배열이 주어진다.
# 이 배열의 테두리가 시계방향으로 한 칸 씩 밀린 배열을 출력
# 여기서 테두리란 배열의 상하좌우 끝 줄을 의미
def rotate():
global arr
temp = arr[0][0]
# 좌측 세로(행) : 위로
for i in range(n-1):
arr[i][0] = arr[i+1][0]
# 하단 가로(열) : 좌측 옆으로
for i in range(m-1):
arr[n-1][i] = arr[n-1][i+1]
# 우측 세로(행) : 아래로
for i in range(n-1, 0, -1):
arr[i][m-1] = arr[i-1][m-1]
# 상단 가로(열) : 우측 옆으로
for i in range(m-1, 0, -1):
arr[0][i] = arr[0][i-1]
arr[0][1] = temp
for i in arr:
for j in i:
print(j, end=' ')
print()
if __name__ == "__main__":
input = sys.stdin.readline
n, m = map(int, input().split())
arr = [ list(map(int, input().split())) for _ in range(n)]
rotate()
|
cs |
반응형
'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글
2차원 확산 (0) | 2021.06.12 |
---|---|
1차원 확산 (0) | 2021.06.12 |
CHEEZE (0) | 2021.06.11 |
최단거리 (0) | 2021.06.07 |
2색칠하기(DFS/BFS) (0) | 2021.06.06 |