Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] LV.02 - 행렬 테두리 회전하기 본문
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
[ 알고리즘 ]
단순구현
[문제 접근]
문제를 보자마자 사각형을 기준으로 회전한다는 점에서, 삼성 기출 로봇청소기가 생각났다.
시작하는 행과 열의 기준을 정해주고 그 만큼 사각형을 회전해주면 된다.
매번 회전에 해당하는 숫자들을 리스트에 담아주고,
그 중의 최소값을 결과값에 담아주면 된다.
[코드]
def solution(rows, columns, queries):
answer = []
graph = []
n = 1
for i in range(rows):
List = []
for j in range(columns):
List.append(n)
n += 1
graph.append(List)
for i in range(len(queries)):
cir = []
x1 = queries[i][0] - 1
y1 = queries[i][1] - 1
x2 = queries[i][2] - 1
y2 = queries[i][3] - 1
x_cnt = x2 - x1
y_cnt = y2 - y1
start = graph[x1][y1] # 임시저장
xx = x1 # 1
yy = y1 # 1
for j in range(x_cnt):
xx += 1
cir.append(graph[xx][yy])
graph[xx - 1][yy] = graph[xx][yy]
for j in range(y_cnt):
yy += 1 # 2
cir.append(graph[xx][yy])
graph[xx][yy - 1] = graph[xx][yy]
for j in range(x_cnt):
xx -= 1
cir.append(graph[xx][yy])
graph[xx + 1][yy] = graph[xx][yy]
for j in range(y_cnt - 1):
yy -= 1
cir.append(graph[xx][yy])
graph[xx][yy + 1] = graph[xx][yy]
cir.append(start)
graph[xx][yy] = start
answer.append(min(cir))
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 삼성 sw 기출 문제 - 마법사 상어와 비바라기 (0) | 2021.07.03 |
---|---|
[Python] 프로그래머스 LV.02 - 2개 이하로 다른 비트 (0) | 2021.07.01 |
[Python] 프로그래머스 LV.02 - 괄호 회전 (0) | 2021.06.30 |
[Python] 백준 #1932 정수 삼각형 (0) | 2021.06.17 |
[Python] 백준 #1874 스택 수열 (0) | 2021.06.12 |