[백준] 16926(파이썬) - 배열 돌리기 1
resilient
·2021. 7. 28. 15:26
728x90
반응형
https://www.acmicpc.net/problem/16926
- 이 문제는 간단한 구현 문제였다.
- 배열을 돌리거나 할 때 중요한 점은 하나의 temp 변수를 만들어주고 처음 시작할 때 값을 넣어준 뒤, 배열을 돌리다 보면 비어있는 배열이 생기는데 그때 temp변수 안에 저장해두었던 값을 빈 배열에 넣어주면 된다.
- 까다로웠던 점은 안에 있는 배열도 돌려줘야 하기 때문인데 n과 m 중에 작은 값은 2로 나눠준 값 만큼 for문을 돌려서 가장자리부터 안에 있는 배열까지 돌려주는 방식으로 구현했다.
- 이 문제는 코드를 보면 바로 이해가 간다.
import sys
input = sys.stdin.readline
n,m,r = map(int,input().split())
data = [list(map(int,input().split())) for _ in range(n)]
for _ in range(r):
for i in range(min(n, m) // 2):
# x, y 는 돌려지는 배열중 가장 첫번째 배열 인덱스
x, y = i, i
temp = data[x][y]
# 안쪽까지 계속 고려해야하기 때문에 n-i랑 m-i까지로 범위설정
for j in range(i + 1, n - i): #좌
x = j
prev_value = data[x][y]
data[x][y] = temp
temp = prev_value
for j in range(i + 1, m - i): #하
y = j
prev_value = data[x][y]
data[x][y] = temp
temp = prev_value
for j in range(i + 1, n - i): #우
x = n - j - 1
prev_value = data[x][y]
data[x][y] = temp
temp = prev_value
for j in range(i + 1, m - i): #상
y = m - j -1
prev_value = data[x][y]
data[x][y] = temp
temp = prev_value
for i in range(n):
for j in range(m):
print(data[i][j], end=' ')
print()
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
[백준] 1477(파이썬) - 휴게소 세우기 (0) | 2021.08.01 |
---|---|
[백준] 1182(파이썬) - 부분수열의 합 (0) | 2021.07.31 |
[백준] 16198(파이썬) - 에너지 모으기 (0) | 2021.07.27 |
[백준] 14226(파이썬) - 이모티콘 (1) | 2021.07.26 |
[백준] 1987(파이썬) - 알파벳 (0) | 2021.07.25 |