Free Lines Arrow
본문 바로가기
Algorithm/프로그래머스 알고리즘

[프로그래머스] 삼각 달팽이

by skahn1215 2021. 5. 15.
728x90
반응형

문제

 

분석

 

패턴을 찾기

처음에는 n 만큼 왼쪽 아래 대각선 방향으로 숫자를 채운다.

두번째는 n-1 만큼 아래를 채운다.

세번째는 n-2 만큼 왼쪽 위 대각선 방향으로 채운다.

 

처음부터 반복한다.

 

구현

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

int map[10001][10001];
int dirx[3] = {1, 0, -1};
int diry[3] = {0, 1, -1};

void solve(int n);
vector<int> solution(int n) {
    vector<int> answer;
    solve(n);

    for(int i = 0; i < n; i++){
        for(int j = 0; j <= i; j++){
            answer.push_back(map[i][j]);
        }
    }
    return answer;
}

void solve(int n)
{
    int num = 2;
    int checkNum = 1;
    int dir = 0;
    int x = 0, y = 0;
    map[0][0] = 1;
    while( true ){
        if(n-1 == 0){
            break;
        }
        if( checkNum == n ){
            n--;
            checkNum = 0;
            if( dir == 0  ){
                dir = 1;
            } else if( dir == 1 ){
                dir = 2;
            } else if( dir == 2) {
                dir = 0;
            }
        }       
       
        x+=dirx[dir];
        y+=diry[dir];
        map[x][y] = num;
        num++;
        checkNum ++;
    }
}

 

 

 

 

 

문제링크: https://programmers.co.kr/learn/courses/30/lessons/68645

 

코딩테스트 연습 - 삼각 달팽이

5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

programmers.co.kr

 

728x90
반응형

댓글