알고리즘/구현

게임 개발

HJ39 2023. 1. 6. 20:28

이것이 파이썬이다 with 파이썬 예제 4-4 게임개발 입니다.

 

□ 소스 코드

#include <bits/stdc++.h>

void gameDev(){
    
    int n,m;
    cin>>n>>m;
    cin.ignore();
    
    int x,y,w;
    cin>>x>>y>>w;
    
    cin.ignore();
    int **arr = new int*[n];
    bool **visited = new bool*[n];  //방문한 곳 확인용
    
    for(int i=0;i<n;i++){
        arr[i] = new int[m];
        visited[i] = new bool[m];
    }
    
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int point;
            cin>>point;
            arr[i][j] = point;
            visited[i][j] = false;
        }
    }
    
    int mvHoriz[] = {0,1,0,-1};
    int mvVerti[] = {-1,0,1,0};
    int count = 1;
    int checkW = w;
    
    visited[x][y] = true;
    
    for(int i=0;i<5;i++){
        if(visited[x+mvHoriz[checkW]][y+mvVerti[checkW]] == false){
            if(arr[x+mvHoriz[checkW]][y+mvVerti[checkW]] == 1){
                checkW++;
            }
            else if(arr[x+mvHoriz[checkW]][y+mvVerti[checkW]] == 0){
                x += mvHoriz[checkW];
                y += mvVerti[checkW];
                visited[x][y] = true;
                i=0;
                checkW = 0;
                count++;
            }
        }
        else{
            checkW++;
        }      
        checkW = checkW % 4;   
    }
    cout<<count<<endl;
    
    for(int i=0;i<n;i++){
        delete [] arr[i];
    }
    delete [] arr;
}

 

 

 

□ 테스트한 예시

예시 1)
4 4
2 1 0
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1

예시 2)
5 5
1 1 0
1 1 1 1 1
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
1 1 1 1 1

예시 3)
5 4
1 1 2
1 1 1 1
1 0 0 1
1 0 0 1
1 0 0 1
1 1 1 1

 

문제에 주어진 조건들을 직접 하나씩 적용하는 수밖에 없는 문제이다.

이런 문제에 익숙해져야 빨리 해결할 수 있을 것 같다.

 

'알고리즘 > 구현' 카테고리의 다른 글

왕실의 나이트  (0) 2023.01.06
시각  (0) 2023.01.06
상하좌우  (0) 2023.01.06