본문 바로가기

Programming

[Algorithm] 달팽이 배열

이차원 배열에 값을 넣는 문제들을 풀다보면 꼭 나오는 문제가 '달팽이 모양으로 값 입력하기'다.

---------------------------------

int matrix[5][5];

int num=1;

int delta=1;

int limit=5;

int i=0,j=-1;


while(1){

        //가로

        for(int p=0; p<limit; p++){

            j=j+delta;

            matrix[i][j]=num++;

        }

        limit--;

        if(limit<0) break;

        //세로

        for(int p=0; p<limit; p++){

            i=i+delta;

            matrix[i][j]=num++;

        }

        delta*=-1;

    }

---------------------------------

이 코드에서 살펴볼 부분은

- limit-- : 두 선이 만나는 부분의 값은 이전 반복문에서 입력되어있다.

- delta*=-1 : →과 ↓쪽으로 갈 때는 i혹은 j의 값을 증가시켜야 하지만, ←과 ↑쪽으로 갈 때는 i혹은 j의 값을 감소시켜가야 하기 때문이다.

'Programming' 카테고리의 다른 글

[JDBC] JDBC 기본 with MySql  (0) 2019.01.01
[SQL] SQL 기본 with MySql  (0) 2019.01.01
[Algorithm] Binary Counting으로 subset구하기  (0) 2018.03.27
[Algorithm] 알고리즘 자료  (0) 2018.03.26
[Node.js] NPM/Java Script  (0) 2018.03.26