웅재의 코딩세상
[프로그래머스] 정수를 나선형으로 배치하기 본문
- 풀이
#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;
}
반응형
'코딩테스트 > 프로그래머스 - LV 0' 카테고리의 다른 글
[프로그래머스] PCCE 기출문제 2번 (0) | 2024.02.09 |
---|---|
[프로그래머스] PCCE 기출문제 1번 (0) | 2024.02.09 |
[프로그래머스] 전국 대회 선발 고사 (0) | 2024.02.03 |
[프로그래머스] 정사각형으로 만들기 (0) | 2024.02.03 |
[프로그래머스] 그림 확대 (0) | 2024.02.03 |