프로그래머스 181832 정수를 나선형으로 배치하기

1 개요[ | ]

프로그래머스 181832 정수를 나선형으로 배치하기

2 C++[ | ]

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(int n) {
    int square = n * n;
    vector<vector<int>> answer(n, vector<int>(n, 0));
    int x = -1, y = 0;
    int direction = 0;
    int dx, dy;
    int num = 0;
    while(true) {
        switch(direction) {
            case 0: dx = 1;  dy = 0;  break;
            case 1: dx = 0;  dy = 1;  break;
            case 2: dx = -1; dy = 0;  break;
            case 3: dx = 0;  dy = -1; break;
        }
        while(-1<x+dx && x+dx<n && -1<y+dy && y+dy<n && answer[y+dy][x+dx] == 0) {
            x += dx; y += dy;
            num++;
            answer[y][x] = num;
        }
        if(num >= square) break;
        direction++;
        direction %= 4;
    }
    return answer;
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}