티스토리 뷰
728x90
문제 링크
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
풀이
1) 배열을 1부터 순서대로 채워줍니다.
2) 시계 방향으로 회전을 시켜야 하니까, 반시계 방향으로 순회하며 값을 복사해줍니다.
3) 정답 리턴
정답 코드
function solution(rows, columns, queries) {
const board = Array(rows).fill().map((row, i) => Array(columns).fill().map((column, j) => i*columns + j + 1));
const rotate = function(query){
let [x1, y1, x2, y2] = query;
x1--, y1--, x2--, y2--;
const ft = board[x1][y1];
const arr = [ft];
for(let i = x1; i < x2; i++){
arr.push(board[i][y1] = board[i+1][y1]);
}
for(let j = y1; j < y2; j++){
arr.push(board[x2][j] = board[x2][j+1]);
}
for(let i = x2; i > x1; i--){
arr.push(board[i][y2] = board[i-1][y2]);
}
for(let j = y2; j > y1; j--){
arr.push(board[x1][j] = board[x1][j-1]);
}
board[x1][y1+1] = ft;
return Math.min(...arr);
}
return queries.reduce((ans, query) => {
ans.push(rotate(query));
return ans;
}, []);
}
728x90
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[BOJ] 백준 21737 - SMUPC 계산기 (Javascript, 제 1회 SMUPC) (0) | 2021.05.12 |
---|---|
[BOJ] 백준 16935 - 배열 돌리기 3 (Javascript) (1) | 2021.05.03 |
[프로그래머스] 다단계 칫솔 판매 (2021 Dev-Matching) (0) | 2021.05.02 |
[프로그래머스] 삼각 달팽이 (월간 코드 챌린지 시즌 1) (0) | 2021.04.15 |
[프로그래머스] 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌 1) (0) | 2021.04.15 |
댓글