문제
코딩테스트 연습 - 행렬 테두리 회전하기
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
해결
- 실제로 이차원 배열을 만들어서 회전시킴
- 기존의 좌표 개념이랑 문제의 좌표 개념이 다른 듯 하다🤔 문제를 꼼꼼히 읽자
소스코드
/*
Prob
https://programmers.co.kr/learn/courses/30/lessons/77485
Writer
MyungSeung Kim(mskim9967@gmail.com)
*/
#include <bits/stdc++.h>
using namespace std;
int mmap[100][100];
int rotate(vector<int> &query) {
int xmin = query[1] - 1, xmax = query[3] - 1,
ymin = query[0] - 1, ymax = query[2] - 1,
x = xmin, y = ymin, tmp = mmap[y][x], mmin = INT_MAX;
while(x < xmax)
mmin = min(mmin, tmp), swap(tmp, mmap[y][x + 1]), x++;
while(y < ymax)
mmin = min(mmin, tmp), swap(tmp, mmap[y + 1][x]), y++;
while(x > xmin)
mmin = min(mmin, tmp), swap(tmp, mmap[y][x - 1]), x--;
while(y > ymin)
mmin = min(mmin, tmp), swap(tmp, mmap[y - 1][x]), y--;
return mmin;
}
vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
vector<int> ans;
for(int y = 0; y < rows; y++)
for(int x = 0; x < columns; x++)
mmap[y][x] = y * columns + x + 1;
for(vector<int> query : queries)
ans.push_back(rotate(query));
return ans;
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
다단계 칫솔 판매 / 2021 Dev-Matching: 웹 백엔드 개발자 (0) | 2021.10.31 |
---|---|
로또의 최고 순위와 최저 순위 / 2021 Dev-Matching: 웹 백엔드 개발자 (0) | 2021.10.29 |
피로도 / 12주차 위클리 챌린지 (0) | 2021.10.29 |
프렌즈4블럭 / 2018 KAKAO BLIND RECRUITMENT 1차 (0) | 2021.08.29 |
셔틀버스 / 2018 KAKAO BLIND RECRUITMENT 1차 (0) | 2021.08.29 |
Comment