https://www.acmicpc.net/problem/16926
(21.11.07)
16926번: 배열 돌리기1 - C언어 풀이
[소스코드]
#pragma warning(disable:4996)
#include <stdio.h>
// [baekjoon] 16926번 - 배열 돌리기1
int main() {
int n, m, r;
scanf("%d %d %d", &n, &m, &r);
int ar[300][300] = { 0 };
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &ar[i][j]);
}
}
int min = n;
if (n > m) min = m;
for (int a = 0; a < r; a++) {
int newar[300][300] = { 0 };
for (int b = 0; b < min / 2; b++) {
int maxn = n - b - 1;
int maxm = m - b - 1;
int nn = b;
int mm = b;
for (int c = 0; c < maxn - b; c++, nn++) {//서쪽
newar[nn + 1][mm] = ar[nn][mm];
}
for (int c = 0; c < maxm - b; c++, mm++) {//남쪽
newar[nn][mm + 1] = ar[nn][mm];
}
for (int c = 0; c < maxn - b; c++, nn--) {//동쪽
newar[nn - 1][mm] = ar[nn][mm];
}
for (int c = 0; c < maxm - b; c++, mm--) {//북쪽
newar[nn][mm - 1] = ar[nn][mm];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ar[i][j] = newar[i][j];
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", ar[i][j]);
}
printf("\n");
}
return 0;
}
반복문만 계속 사용해서 풀어낸 구현 문제.
입력받은 배열과 같은 크기의 임시 배열을 만들고,
임시 배열에 조건에 맞춰 원소의 값을 넣으면 쉽게 풀린다.
'학습 정리 > 👨💻 PS Study' 카테고리의 다른 글
[C] 백준 4884번 - FIFA 월드컵 (0) | 2022.07.09 |
---|---|
[C] 백준 1018번 - 체스판 다시 칠하기 (0) | 2022.07.09 |
[C] 백준 1100번 - 하얀 칸 (0) | 2022.07.09 |
[C] 백준 1759번 - 암호 만들기 (0) | 2022.07.08 |
[C] 백준 4949번 - 균형잡힌 세상 (0) | 2022.07.08 |