C++:: 프로그래머스 < 삼각 달팽이 >

jahlee·2023년 7월 2일
0

프로그래머스_Lv.2

목록 보기
60/106
post-thumbnail

배열에서 반시계로 숫자를 넣으면 되는 문제이다. 범위를 넘어가는 부분에 대한 예외처리를 잘 해주면 되는 문제이다.

#include <string>
#include <vector>
using namespace std;

vector<int> solution(int n) {
    vector<int> answer;
    vector<vector<int>> board(n, vector<int>(n,0));
    int i=0, j=0, num = 1;
    while (true) {
        bool endFlag = true;
        while (i+1 < n && board[i+1][j] == 0) {//아래로 갈수있을때 까지 내림
            board[i++][j] = num++;
            endFlag = false;
        }
        if (endFlag) break ;// 움직이지 못했다면 끝
        while (j+1 < n && board[i][j+1] == 0) {//오른쪽으로...
            board[i][j++] = num++;
            endFlag = true;
        }
        if (!endFlag) break ;// 움직이지 못했다면 끝
        while (i-1 > 0 && j-1 > 0 && board[i-1][j-1] == 0) {왼쪽위로..
            board[i--][j--] = num++;
            endFlag = false;
        }
        if (endFlag) break ;// 움직이지 못했다면 끝
    }
    board[i][j] = num;
    
    for(auto col : board)
        for (auto num : col)
            if (num) answer.push_back(num);
    
    return answer;
}

0개의 댓글