반응형
문제
정사각형의 크기를 입력 받은 후 시계 방향으로 돌면서 다음과 같은 형태로 출력하는 프로그램을 작성하시오.
< 처리조건 >
(1) 가장 왼쪽 위의 좌표부터 차례로 숫자를 대입 시킨다.
(2) 오른쪽으로 채워 나가다가 끝이면 다시 아래 → 왼쪽 → 위 →오른쪽의 순으로 모두 채워질 때까지 반복한다.
< 풀이 >
배열에 원소를 넣을때 마다, cnt 값을 올린다.
cnt 값이 n*n 이하일때까지 while 문을 돌린다.
while 문 내에 for 문이 4 개 포함되어있지만, 루프에 문제가 생기지는 않는다.
for 문이 반복되는 조건은 m 이 1이상일 때이기 때문이다.
n*n 값이 채워지는 경우 m은 0이 되므로 for문은 돌지 않고 정상적으로 의도한 만큼 while 문은 돌고 종료된다.
int arr[n][n];
int num = 1;
int m = n;
int x = 0;
int y = -1;
while( m > 0 ){
for ( int i = 1; i<=m; i++){
arr[x][++y] = num++;
}
m--;
for ( int i = 1; i<=m; i++){
arr[++x][y] = num++;
}
for ( int i = 1; i<=m; i++){
arr[x][--y] = num++;
}
m --;
for ( int i = 1; i<=m; i++){
arr[--x][y] = num++;
}
}
< 결과 >
반응형
'SW > 문제은행' 카테고리의 다른 글
[C/C++] 정올 - 파스칼 삼각형 #2071 (0) | 2024.04.24 |
---|---|
[C/C++] 정올 - 별삼각형 #1523 #1719 #1329 (1) | 2024.04.23 |
[C/C++] 정올 - 달팽이 트리 #5398 (0) | 2024.04.17 |
[C/C++] 정올 - 달팽이 삼각형 #1337 (0) | 2024.04.17 |
댓글