C언어/주차별 문제

[5주차] 지뢰찾기1

슈슈버거 2023. 4. 23. 00:28

문제


내가 작성한 코드

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    char map[10]; //지뢰 입력받을 char형 배열
    char result[10]; //지뢰 개수 반영할 char형 배열

    scanf("%s", &map);

    for(int i = 0; i<10; i++){ //map의 처음부터 끝까지
        if(map[i] == '*'){ //map[i]가 지뢰일 경우
            result[i] = '*'; //result[i]도 지뢰로 표현
        }
        else{//지뢰가 아닐 경우
            if(i == 0){ //맨 처음 위치일 경우
                if(map[1]=='*'){ //옆 칸이 지뢰면
                    result[0] = '1'; //내 주위 지뢰는 1개
                }
                else{ //옆 칸이 지뢰가 아니면
                    result[0] = '_'; //내 주위 지뢰는 0개
                }
            }
            else if(i == 9){ //맨 마지막 위치일 경우
                if(map[8]=='*'){ //옆 칸이 지뢰면
                    result[9] = '1'; //내 주위 지뢰는 1개
                }
                else{ // 옆 칸이 지뢰가 아니면
                    result[9] = '_'; //내 주위 지뢰는 0개
                }
            }
            else{ //2번째에서 9번째까지
                if(map[i+1] == '*' && map[i-1] == '*'){//양 옆이 지뢰면
                    result[i] = '2'; // 내 주위 지뢰는 2개
                }
                else if((map[i+1] == '*' && map[i-1] == '.')||(map[i+1] == '.' && map[i-1] == '*')){
                    //내 주위에 한 곳은 지뢰 한 곳은 지뢰가 아니면
                    result[i] = '1'; // 내 주위 지뢰는 1개
                }
                else{ // 양 옆이 모두 지뢰가 아니면
                    result[i] = '_'; //내 주위 지뢰는 0개
                }
            }
        }
    } //지뢰 개수 판별 과정 종료
    
    //출력 시작
    for(int i = 0; i<10; i++){
        printf("%c", result[i]);//result[i] 출력
    }
    printf("\n"); //개행

    return 0;
}

이때가 좋았지 양옆만 고려하면 되고 ㅎㅎㅎㅎ