https://school.programmers.co.kr/learn/courses/30/lessons/77485
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스 - 행렬 테두리 회전하기 (77485번)
난이도 : Lv 2
알고리즘 : Implementation (구현)
def solution(rows, columns, queries):
def rotate(x1, y1, x2, y2):
x1 -= 1; y1 -= 1; x2 -=1; y2 -= 1
miny = tmp = board[x1][y1]
for r in range(x1, x2):
board[r][y1] = board[r+1][y1]
miny = min(miny, board[r][y1])
for c in range(y1, y2):
board[x2][c] = board[x2][c+1]
miny = min(miny, board[x2][c])
for r in range(x2, x1, -1):
board[r][y2] = board[r-1][y2]
miny = min(miny, board[r][y2])
for c in range(y2, y1, -1):
board[x1][c] = board[x1][c-1]
miny = min(miny, board[x1][c])
board[x1][y1+1] = tmp
return miny
maxy = rows * columns
board = [[r+c for c in range(columns)] for r in range(1, maxy, columns)]
return [rotate(*q) for q in queries]
2021 Dev-Matching: 웹 백엔드 개발자(상반기) 기출문제이다.
코드와 같이, 각 쿼리마다
행렬의 테두리를 한 칸씩 시계방향으로 회전시키고,
테두리에서 최소값을 찾아 반환하면 된다.
(x1, y1) 좌표값을 기억해두고, 테두리를 한 칸씩 회전시킨 다음
마지막에 원래의 (x1, y1) 좌표값을 (x1, y1+1) 좌표에 넣어주는 방식으로 구현했다.
'Algorithm' 카테고리의 다른 글
다단계 칫솔 판매 (77486번) - 프로그래머스 (Programmers) (0) | 2023.06.27 |
---|---|
수 묶기 (1744번) - 백준 (BOJ) (0) | 2023.06.26 |
Moo 게임 (5904번) - 백준 (BOJ) (0) | 2023.06.24 |
메뉴 리뉴얼 (72411번) - 프로그래머스 (Programmers) (0) | 2023.06.23 |
카드 짝 맞추기 (72415번) - 프로그래머스 (Programmers) (0) | 2023.06.21 |