본문 바로가기
SW/문제은행

[C/C++] 정올 - 달팽이 트리 #5398

by FastBench 2024. 4. 17.

문제

달팽이의 나라 달팽국에서는 크리스마스 때 특별한 트리를 세워 장식한다.

이 트리를 달팽국 사람들은 달팽이 트리라고 부르는데, 

달팽이 트리는 꼭대기부터 0~9까지의 정수가 반시계 방향으로 밖에서 안으로 채워진 형태를 띄고 있다.

 

달팽이 트리의 크기는 매 해 달팽국의 행복도에 비례하여 다르게 정해진다.

예를 들어 아래와 같이 행복도가 6이면 크기 6짜리 달팽이 트리가 만들어진다.

 

< 풀이 >

달팽이 삼각형 문제와 똑같이 풀면 된다.

https://microelectronics.tistory.com/52

 

    int m = n;
    int x = -1;
    int y = 0;
    int num = 0;


    while ( m > 0 ){
        for ( int i = 1; i <= m; i++){
            arr[++x][y] = num++; 
            num = (num == 10) ? 0 : num;
        }
        m--;
        for ( int i = 1; i <=m; i++){
            arr[x][++y] = num++;
            num = (num == 10) ? 0 : num;
        }
        m--;
        for ( int i = 1; i <=m; i++){
            arr[--x][--y] = num++;
            num = (num == 10) ? 0 : num;
        }
        m--;
    }

 

다만, 출력시 공백을 추가하는 부분이 들어간다

    for ( int i = 0; i < n; i++){
        for (int j= 0; j < n-1 -i; j++) printf(" ");
        for (int j= 0; j < n; j++) if ( arr[i][j] != -1) printf("%d ", arr[i][j]);
        printf("\n");
    }

 

< 결과 >

댓글