728x90
문제
세로 길이 N, 가로 길이 M 인 2차원 배열과 두 정수 u, d 가 주어진다.
이 배열의 0 번 부터 u 번 까지의 행은 테두리가 시계방향으로 한 칸 씩 밀리고, d 번 부터 n - 1 번 까지의 행은 테두리가 반시계방향으로 한 칸 씩 밀린 배열을 출력하여라. 여기서 테두리란 해당 범위의 상하좌우 끝 줄을 의미한다.
입력
첫 줄에 N, M 이 주어진다.
두 번째 줄부터 N 줄에 걸쳐 각 줄에 M 개씩 배열의 수가 주어진다.
마지막 줄에 u, d 가 주어진다.
(4 ≤ N, M ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ N x M, 0 < u < d < N - 1)
출력
밀기가 끝난 배열을 출력한다.
입력의 예 1
5 5
2 3 1 1 4
1 3 2 3 4
1 2 7 3 7
3 2 1 4 2
1 4 5 5 1
1 2
출력의 예 1
1 2 3 1 1
3 2 3 4 4
2 7 3 7 2
1 2 1 4 1
3 1 4 5 5
입력의 예 2
5 5
1 3 4 2 4
1 2 5 8 7
6 4 5 2 7
3 4 2 8 9
9 8 7 4 5
1 3
출력의 예 2
1 1 3 4 2
2 5 8 7 4
6 4 5 2 7
4 2 8 9 5
3 9 8 7 4
입력의 예 3
4 4
1 2 4 2
3 4 1 7
8 3 1 6
9 8 9 7
1 2
출력의 예 3
3 1 2 4
4 1 7 2
3 1 6 7
8 9 8 9
입력의 예 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
2 4
출력의 예 4
2 7 1 3 5
2 3 4 8 4
1 4 7 9 3
9 8 5 3 1
3 6 7 4 5
2 1 4 3 2
#코드
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import sys
# 세로 길이 N, 가로 길이 M 인 2차원 배열과 두 정수 u, d 가 주어진다.
# 이 배열의 0 번 부터 u 번 까지의 행은 테두리가 시계방향으로 한 칸 씩 밀리고,
# d 번 부터 n - 1 번 까지의 행은 테두리가 반시계방향으로 한 칸 씩 밀린 배열을 출력
def doit():
global getArr
# ************** 첫 번째 시계 방향 밀기 **************
temp = getArr[0][0]
# 좌측 세로
for i in range(u):
getArr[i][0] = getArr[i+1][0]
# 하단
for i in range(m-1):
getArr[u][i] = getArr[u][i+1]
# 우측 세로
for i in range(u, 0, -1):
getArr[i][m-1] = getArr[i-1][m-1]
# 상단
for i in range(m-1, 0, -1):
getArr[0][i] = getArr[0][i-1]
getArr[0][1] = temp
# ************** 두 번째 반시계 방향 밀기 **************
# d ~ (n-1) : 2 ~ 4
temp = getArr[d][0]
# 상단
for i in range(m-1):
getArr[d][i] = getArr[d][i+1]
# 우측 세로
for i in range(d, n-1):
getArr[i][m-1] = getArr[i+1][m-1]
# 하단
for i in range(m-1, 0, -1):
getArr[n-1][i] = getArr[n-1][i-1]
# 좌측 세로
for i in range(n-1, d, -1):
getArr[i][0] = getArr[i-1][0]
getArr[d+1][0] = temp
for i in getArr:
for j in i:
print(j, end=' ')
print()
if __name__ == "__main__":
input = sys.stdin.readline
n, m = map(int, input().split())
getArr = [list(map(int, input().split())) for _ in range(n)]
u, d = map(int, input().split())
doit()
|
cs |
반응형