반응형
https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 해결방법
dfs를 사용하여 방문여부를 체크하고, 더불어 array의 값이 3일때를 체크하는 방식을 사용하였다.
방문여부를 체크할 bool array가 dfs재귀함수 호출전에 체크해줘야한다는 주의사항이 있다.
2. 코드
#include <string.h>
#include <iostream>
using namespace std;
int num = 0;
int ary[16][16];
int bo[16][16] = { 0 };
int result = 0;
int dx[4] = { -1, 1 ,0, 0 };
int dy[4] = { 0, 0, -1, 1 };
void dfs(int x, int y) {
bo[1][1] = 1;
if (ary[x][y] == 3) {
result = 1;
}
else {
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 1 || ny < 1 || nx >= 14 || ny >= 14 || ary[nx][ny] == 1 || bo[nx][ny]){
continue;
}
else{
bo[nx][ny] = 1;
dfs(nx, ny);
}
}
}
}
int main()
{
for (int i = 0; i < 10; i++) {
scanf("%d", &num);
memset(bo, 0, sizeof(bo));
for (int m = 0; m < 16; m++) {
for (int n = 0; n < 16; n++) {
scanf("%1d", &ary[m][n]);
}
}
result = 0;
dfs(1, 1);
cout << "#" << num << " " << result << endl;
}
}
반응형
'코딩테스트 > SW expert' 카테고리의 다른 글
[SW Expert] #2814 최장 경로 (0) | 2019.12.31 |
---|---|
[SW Expert] #3459 승자 예측하기 (0) | 2019.12.20 |
[SW Expert] #2817 부분수열의 합 (0) | 2019.12.06 |
[SW Expert] #1215 S/W 문제해결 기본 3일차 - 회문1 (0) | 2019.12.04 |
[SW Expert] #2805 농작물 수확하기 (0) | 2019.12.02 |