코딩테스트/프로그래머스 - LV 0
[프로그래머스] 정수를 나선형으로 배치하기
웅드
2024. 2. 8. 16:45
- 풀이
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(int n) {
vector<vector<int>> answer(n,vector<int>(n,0));
int num = 1; // start number
int x1=0,x2=n-1;
int y1=0,y2=n-1;
while(num <= n*n){
// y가 1행일때 x 채우기
for(int i = x1; i <= x2; ++i){
answer[y1][i] = num++;
}
y1++; // 1행을 채웠으므로 2행 채울 수 있게 y1++
// 나선형으로 채워야 하기 때문에 x의 마지막 열에 y값 채우기
for(int i = y1; i <= y2; ++i){
answer[i][x2] = num++;
}
x2--; // x의 마지막 값을 채워 넣었기 때문에 x2--
//y의 마지막 행 x값 채우기
for(int i = x2; i >= x1; --i){
answer[y2][i] = num++;
}
y2--; // y의 마지막 행 채웠기 때문에 y2--
//x의 첫번째 열에 y 값 채우기
for(int i = y2; i >= y1; --i){
answer[i][x1] = num++;
}
x1++; // 첫번째 열에 값을 채워 넣었기 때문에 x1++
}
return answer;
}
반응형