코딩테스트 연습 - 행렬 테두리 회전하기
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 = []
# 행렬 만들기
matrix = [[0] * (columns + 1)]
for i in range(rows):
matrix.append([x + (columns * i) for x in range(columns+1)])
# Query 돌면서 answer에 추가
for query in queries:
target = []
# 회전하고 target 추가
x1, y1, x2, y2 = query
for y in range(y1, y2):
tmp = matrix[x1][y]
target.append(tmp)
for x in range(x1, x2):
tmp = matrix[x][y2]
target.append(tmp)
for y in range(y2, y1, -1):
tmp = matrix[x2][y]
target.append(tmp)
for x in range(x2, x1, -1):
tmp = matrix[x][y1]
target.append(tmp)
# 최솟값 추가하기
answer.append(min(target))
# 넣기
i = 0
for y in range(y1, y2):
matrix[x1][y+1] = target[i]
i += 1
for x in range(x1, x2):
matrix[x+1][y2] = target[i]
i += 1
for y in range(y2, y1, -1):
matrix[x2][y-1] = target[i]
i += 1
for x in range(x2, x1, -1):
matrix[x-1][y1] = target[i]
i += 1
return answer
다른 풀이
IDEA
행렬 1, 1 부터 시작하기에, index 값 편하게 사용하기 위해 행, 렬을 하나 씩 더 주고 사용했다.
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 짝지어 제거하기 (0) | 2022.06.08 |
---|---|
[문제 풀이] 방금그곡 (0) | 2022.05.05 |
[문제 풀이] 백준 18870 (0) | 2022.04.08 |
[문제 풀이] 백준 1167 (0) | 2022.04.08 |
[문제 풀이] 백준 1043 (0) | 2022.04.08 |
코딩테스트 연습 - 행렬 테두리 회전하기
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 = []
# 행렬 만들기
matrix = [[0] * (columns + 1)]
for i in range(rows):
matrix.append([x + (columns * i) for x in range(columns+1)])
# Query 돌면서 answer에 추가
for query in queries:
target = []
# 회전하고 target 추가
x1, y1, x2, y2 = query
for y in range(y1, y2):
tmp = matrix[x1][y]
target.append(tmp)
for x in range(x1, x2):
tmp = matrix[x][y2]
target.append(tmp)
for y in range(y2, y1, -1):
tmp = matrix[x2][y]
target.append(tmp)
for x in range(x2, x1, -1):
tmp = matrix[x][y1]
target.append(tmp)
# 최솟값 추가하기
answer.append(min(target))
# 넣기
i = 0
for y in range(y1, y2):
matrix[x1][y+1] = target[i]
i += 1
for x in range(x1, x2):
matrix[x+1][y2] = target[i]
i += 1
for y in range(y2, y1, -1):
matrix[x2][y-1] = target[i]
i += 1
for x in range(x2, x1, -1):
matrix[x-1][y1] = target[i]
i += 1
return answer
다른 풀이
IDEA
행렬 1, 1 부터 시작하기에, index 값 편하게 사용하기 위해 행, 렬을 하나 씩 더 주고 사용했다.