Make Unreal REAL.
article thumbnail
Level 2. 삼각 달팽이

 

 

한 방향당 n, n-1, n-2, ..., 1, 0 개수대로 입력하면 된다.

 

피라미드 모양으로 생각하지 말고, 직각삼각형 모양으로 생각하면 쉽다.

1

2    9

3   10   8

4    5    6    7

 

#include <iostream>
#include <vector>

using namespace std;

vector<int> solution(int n)
{
    vector<int> answer((n + 1) * n / 2);
    vector<vector<int>> vv(n, vector<int>(n, -1));
    int dx[] = {0, 1, -1};
    int dy[] = {1, 0, -1};
    int num = 1, dcur = 0;
    int x = 0, y = -1;

    do 
    {
        for (int i = 0; i < n; ++i)
            vv[y += dy[dcur]][x += dx[dcur]] = num++;

        dcur = ++dcur % 3;
    }
    while (n--);

    num = 0;

    for (vector<int>& v : vv)
        for (int e : v)
            if (e != -1)
                answer[num++] = e;
            else
                break;

    return answer;
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 0. 코드 처리하기  (0) 2023.05.09
Level 2. [1차] 프렌즈4블록  (0) 2023.05.08
Level 0. 배열 조각하기  (0) 2023.05.06
Level 0. 주사위 게임 3  (0) 2023.05.06
Level 0. 세 개의 구분자  (0) 2023.05.05
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그