![[Day7] goorm level 구름톤 챌린지_구름 찾기 깃발](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnRMPT%2FbtsrH3KvKrP%2FeXKq4kWLEsaILPbvXZv2F1%2Fimg.png)
[Day7] goorm level 구름톤 챌린지_구름 찾기 깃발구름톤 트레이닝/구름톤 챌린지2023. 8. 22. 17:49
목차
문제 7. 구름 찾기 깃발
정의
한 변의 길이를 n, 정해진 깃발의 값을 k로 변수를 정의했고 게임판의 인덱스를 arr[][]로 정의하여 이차원 배열로 관리했다.
또한 찾아야할 깃발의 값을 pts, 값이 k인 깃발의 개수를 나타내는 res 변수를 정의했다.
고민
/*처음에 짰던 코드*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, k=0;
int pts, res=0;
scanf("%d %d", &n, &k);
int** arr = (int**)malloc(sizeof(int*) * n);
for(int i=0; i<n; i++){
arr[i] = (int*)malloc(sizeof(int)*n);
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
scanf("%d", &arr[i][j]);
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(arr[i][j]==0) {
for(int x=i-1; x<=i+1; x++) {
for(int y=j-1; y<=j+1; y++) {
if(arr[x][y]==1)
{
pts++;
}
}
}
}
if(pts==k)
res++;
pts=0;
}
}
printf("%d", res);
return 0;
}
깃발의 값은 자신의 상하좌우와 대각선으로 인접한 여덟 칸(상황에 따라 8칸 이하가 될 수 있다) 중 구름이 있을 경우 커지기 때문에 이차원배열에서 자신의 위치를 arr[i][j]로 본다면 i-1부터 i+1, j-1부터 j+1까지의 인덱스에 구름의 유무를 확인하고 있다면 깃발의 개수를 1 증가시키는 방식으로 생각했다. 이차원 배열은 malloc을 사용하여 입력받은 n값에 대한 크기로 생성하도록 하였다. 처음 생각한 방법이 로직은 맞았지만 오류가 있었다. i-1부터 i+1, j-1부터 j+1까지를 검색하는 과정에서 x, y값이 각각 0보다 작아지거나 n과 같아지는 경우가 생길 수 있는 코드여서 오류가 발생했고, if문에 조건을 더 추가하는 방식으로 해당 이슈를 해결했다.
풀이
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, k=0;
int pts, res=0;
scanf("%d %d", &n, &k);
int** arr = (int**)malloc(sizeof(int*) * n);
for(int i=0; i<n; i++){
arr[i] = (int*)malloc(sizeof(int)*n);
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
scanf("%d", &arr[i][j]);
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
pts=0;
if(arr[i][j]==0) {
for(int x=i-1; x<=i+1; x++) {
for(int y=j-1; y<=j+1; y++) {
if(x>=0 && x<n && y>=0 && y<n &&arr[x][y]==1)
{
pts++;
}
}
}
}
if(pts==k)
res++;
}
}
printf("%d", res);
for (int i = 0; i < n; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
728x90
반응형
'구름톤 트레이닝 > 구름톤 챌린지' 카테고리의 다른 글
[Day8] goorm level 구름톤 챌린지_통증 (2) | 2023.08.23 |
---|---|
[Day4] goorm level 구름톤 챌린지_완벽한 햄버거 만들기 (0) | 2023.08.17 |
[Day3] goorm level 구름톤 챌린지_합 계산기 (0) | 2023.08.16 |
[Day2] goorm level 구름톤 챌린지_프로젝트 매니징 (0) | 2023.08.16 |
[Day1] goorm level 구름톤 챌린지_운동 중독 플레이어 (0) | 2023.08.16 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!