Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스 #NULL 처리하기
- 동
- 그리디알고리즘 #그리디 #백준 #우선순위큐 #최소힙 #최대힙 #알고리즘 #코딩테스트 #python
- 프로그래머스 #python #코딩테스트 #코테공부 #알고리즘 #dict
- 프로그래머스 #네트워크 #c++ #코딩테스트 #코테 #코테준비 #dfs
- 백준 #백준알고리즘 #알고리즘 #코딩테스트 #코딩테스트준비 #코테준비 #백준2110 #python #문제풀이
- 카카오 #프로그래머스 #python #코딩테스트 #오픈채팅방
- 카카오 코테
- 프로그래머스 #sql #mysql #코딩테스트
- 프로그래머스 #c++ #코딩테스트
- 백준 #이거다시풀기
- 프로그래머스 #python #2021카카오 #카카오코테 #카카오인턴쉽
- 백준 #백준2217 #백준로프 #python
Archives
- Today
- Total
say repository
[프로그래머스] 행렬 테두리 회전하기 python (*) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/77485
출처 : 프로그래머스
코딩테스트 연습 - 행렬 테두리 회전하기
6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]
programmers.co.kr
풀이
matrix을 초기화 한다.
초기화 하는 방법은 어렵지 않다.
위의 그림은 회전 그림이다.
(x1, y1, x2, y2) 기준으로 회전을 한다.
처음에 노랗게 칠한 (2,2)을 tmp_min 변수에 저장한다.
왼쪽부터 아래에 있는 것을 하나씩 위로 올린다.
왼쪽, 아래, 오른쪽, 위 순서대로 회전 코드를 썼다.
하나씩 밀다보면 matrix[x1][y1+1] 가 비어서 여기에 처음에 저장한 tmp_min을 넣어준다.
또, 주의할 점은 오른쪽과 위의 요소를 밀 때, 포문을 역순으로 돌아야 한다.
코드
def solution(rows, columns, queries):
answer = []
matrix = [[0 for c in range(columns + 1)] for r in range(rows + 1)] # 초기화
# 아무 회전도 안했을 때
n = 1
for i in range(1, rows + 1):
for j in range(1, columns + 1):
matrix[i][j] = n
n += 1
for x1, y1, x2, y2 in queries:
tmp_min = matrix[x1][y1]
tmp_copy = tmp_min
# 회전
for k in range(x1, x2): # 왼쪽
tmp = matrix[k+1][y1]
matrix[k][y1] = tmp
tmp_copy = min(tmp_copy, tmp)
for k in range(y1, y2): # 아래
tmp = matrix[x2][k+1]
matrix[x2][k] = tmp
tmp_copy = min(tmp_copy, tmp)
for k in range(x2, x1, -1): # 오른쪽
tmp = matrix[k-1][y2]
matrix[k][y2] = tmp
tmp_copy = min(tmp_copy, tmp)
for k in range(y2, y1, -1): # 위
tmp = matrix[x1][k-1]
matrix[x1][k] = tmp
tmp_copy = min(tmp_copy, tmp)
# 회전 마치고 바꾸기
matrix[x1][y1+1] = tmp_min
answer.append(tmp_copy)
return answer
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 순위 검색 python (*) (0) | 2022.05.28 |
---|---|
[프로그래머스] 조이스틱 python (*) (0) | 2022.05.28 |
[프로그래머스] 피로도 python (0) | 2022.05.26 |
[프로그래머스] 소수 찾기 (level2) python (0) | 2022.05.25 |
[프로그래머스] [3차] 압축 python (*) (0) | 2022.04.28 |