티스토리 뷰
반응형
이 문제는 정말 상하/좌우 반전과 시계/반시계 방향 회전의 끝판왕인것 같다..
다시 풀라고 해도 다시 풀 자신이 없는데 적어도 일주일 지나고 다시 풀어봐야할 것 같다 ㅠㅠ
import sys
input = sys.stdin.readline
def flip1(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[i+2**l-r-1][j+c]
return new_matrix
def flip2(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[i+r][j+2**l-c-1]
return new_matrix
def rotate90(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[i+2**l-c-1][j+r]
return new_matrix
def rotate_90(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[i+c][j+2**l-r-1]
return new_matrix
def big_flip1(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[2**N-2**l-i+r][j+c]
return new_matrix
def big_flip2(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[i+r][2**N-2**l-j+c]
return new_matrix
def big_rotate90(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[2**N-2**l-j+r][i+c]
return new_matrix
def big_rotate_90(l):
new_matrix = [row[:] for row in matrix]
for i in range(0,2**N,2**l):
for j in range(0,2**N,2**l):
for r in range(2**l):
for c in range(2**l):
new_matrix[i+r][j+c] = matrix[j+r][2**N-2**l-i+c]
return new_matrix
N, R = map(int, input().split())
matrix = [input().split() for _ in range(2**N)]
for _ in range(R):
K, L = map(int, input().split())
if K == 1:
matrix = flip1(L)
elif K == 2:
matrix = flip2(L)
elif K == 3:
matrix = rotate90(L)
elif K == 4:
matrix = rotate_90(L)
elif K == 5:
matrix = big_flip1(L)
elif K == 6:
matrix = big_flip2(L)
elif K == 7:
matrix = big_rotate90(L)
elif K == 8:
matrix = big_rotate_90(L)
for row in matrix:
print(*row)
반응형
'IT > Python' 카테고리의 다른 글
[코드트리] 예술성 - 파이썬 (0) | 2023.09.13 |
---|---|
[코드트리] 술래잡기 - 파이썬 (0) | 2023.09.13 |
[백준] 14503 로봇청소기 - 파이썬 (0) | 2023.09.12 |
퀵 정렬 / 병합 정렬 (0) | 2023.09.12 |
[Python] M1 Mac에서 Konlpy 오류 (0) | 2022.10.04 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카이제곱검정
- tsconfig
- 삼전
- submodule
- cssom
- polyfill
- graphql
- Polygon
- konlpy
- 삼성
- 블로그플랫폼
- react
- ReactDOM
- svelte
- 렌더트리
- 역량테스트
- Python
- 도커컨테이너
- docker
- SCSA
- architecting
- wkt
- aws
- SW역량테스트
- 삼성전자
- GeoPolygon
- DOM
- choropleth
- Plotly
- Next.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함