이것이 파이썬이다 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
문제에 주어진 조건들을 직접 하나씩 적용하는 수밖에 없는 문제이다.
이런 문제에 익숙해져야 빨리 해결할 수 있을 것 같다.