https://www.acmicpc.net/problem/16927
16927번: 배열 돌리기 2
크기가 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]
www.acmicpc.net
문제 접근
우선, 규칙성을 찾아서 반복문 내에 조건식을 작성해야겠다고 생각했다.
행과 열이 동시에 바뀌는 경우는 존재하지x
1. j = 0, i ≠ N-1 인 경우: 행이 아래로 이동 열은 고정
i => i + 1 j => j
2. j = 0, i = N-1 인 경우: 열이 오른쪽으로 이동
i => i j => j+1
3. j = M-1, i ≠ 0 인 경우: 행이 위로 이동 열은 고정
i => i - 1 j => j
4. j = M-1, i = 0 인 경우: 열이 왼쪽으로 이동
i => i j => j-1
내가 놓친 부분...?
껍데기랑 안쪽이 같이 돌아가는데 그 부분을 간과함...
코드
import sys
input = sys.stdin.readline
# N X M 배열, 배열은 반시계 방향으로 회전
N, M, R = map(int, input().split())
arr = []
for _ in range(N):
row = list(map(int, input().split()))
arr.append(row)
# print(arr)
for _ in range(R):
for i in range(N):
for j in range(M):
if j == 0:
if i != N-1:
arr[i][j] = arr[i+1][j]
else:
arr[i][j] = arr[i][j+1]
elif j == M-1:
if i != 0:
arr[i][j] = arr[i-1][j]
else:
arr[i][j] = arr[i][j-1]
print(arr)
'알고리즘 > 백준' 카테고리의 다른 글
세그먼트 트리(Segment Tree) & [백준]2042 구간합(Python) (0) | 2024.02.15 |
---|---|
[백준]11437 LCA(Python) (0) | 2024.02.14 |
[백준]2096 내려가기(Python) (1) | 2024.02.03 |
[백준]3665 최종순위(Python) (1) | 2024.01.30 |
[백준]1766 문제집(Python) (0) | 2024.01.29 |