반응형
#include <stdio.h>
int calc(int w, int h, int j, int i) {
if (i >= 0 && i < h && j >= 0 && j < w) {
return 1;
}
return 0;
}
int main() {
int field[4][4] = {{0,1,0,1}, {0,0,0,1}, {1,1,1,0}, {0,1,1,1}};
int mines[4][4]= {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
int i, j ,k ,l;
for (l=0; l<h; l++) {
for (k=0; k<w; k++) {
if(field[l][k] == 0)
continue;
for(i=l-1; i<=l+1;i++) {
for (j=k-1; j<=k+1; j++) {
if (calc(w,h,j,i) == 1) {
mines[i][j] += 1;
}
}
}
}
}
for (l=0; l<h; l++) {
for(k=0; k<w; k++) {
printf("%d", mines[l][k]);
}
printf("\n");
}
return 0;
}
이 코드의 목적은 field 배열에서 각 지뢰의 위치를 찾고, 해당 지뢰 주변의 모든 셀의 카운트를 1씩 증가시키는 것입니다.
각 지뢰('1'로 표시된 셀) 주변에 있는 모든 셀의 값을 증가시킵니다. 이 과정은 배열의 범위 내에서만 이루어지며, 각 지뢰가 있는 위치에서 주변 8개 셀(가능한 경우)의 값을 1씩 증가시키는 방식으로 작동합니다.
핵심 로직은 다음과 같습니다:
- 지뢰가 있는 각 위치 l, k에 대해, 그 주변 셀 i, j를 탐색합니다.
- 주변 셀이 유효한 범위 내에 있다면(calc 함수가 1을 반환), 해당 셀의 mines 값에 1을 더합니다. 이는 지뢰 주변에 있는 셀의 수를 카운트합니다.
- 이 프로세스는 모든 지뢰 위치에 대해 반복되며, 최종적으로 각 셀 주변의 지뢰 수가 mines 배열에 기록됩니다.
field 배열을 기반으로 mines 배열을 계산하면, 다음과 같은 결과를 얻습니다:
field 배열:
0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 1
mines 배열 계산 결과:
1 1 2 1
3 3 3 2
1 3 3 2
2 2 2 1
반응형
'Certificate > 정보처리기사 실기' 카테고리의 다른 글
[개념] 애자일(Agile) (0) | 2024.04.04 |
---|---|
2023년 3회 기출 08 - C언어 (0) | 2024.04.03 |
2023년 3회 기출 04 - C언어 (0) | 2024.04.03 |
2022년 3회 기출 13 - C언어 (0) | 2024.03.27 |
정보처리기사 실기 접수 완료~접수 느므히미드네 (0) | 2024.03.26 |