일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 네트워크
- D2
- 독서
- 데이터베이스
- 법의학
- 감상문
- 백준
- 재테크/투자
- cs
- Database
- network
- 운영체제
- Programmers
- OS
- c++
- SW Expert Academy
- language
- Computer Science
- 문제풀이
- 프로그래머스
- LeetCode
- algogritim
- db
- 자료구조
- data structure
- D3
- BOJ
- swea
- 알고리즘
- algorithm
Archives
- Today
- Total
선택은 나의 것
[BOJ 백준] 13565번 침투 본문
문제
BOJ 13565 : https://www.acmicpc.net/problem/13565
13565번: 침투
문제 인제대학교 생화학연구실에 재직중인 석교수는 전류가 침투(percolate) 할 수 있는 섬유 물질을 개발하고 있다. 이 섬유 물질은 2차원 M × N 격자로 표현될 수 있다. 편의상 2차원 격자의 위��
www.acmicpc.net
접근
석교수가 만든 섬유가 outer side부터 inner side까지 전류가 침투할 수 있는지 알아보는 문제이다.
전류가 통하는 격자는 0으로 통하지 않는 격자는 1로 나타낸다.
따라서 outer side와 닿는 부분인 0번째 격자들을 시작으로 dfs를 돌아 inner side와 닿는 n - 1번째 격자까지 도달할 수 있는지를 알아보면 답을 찾을 수 있다.
이때 방문을 체크하는 visit는 dfs를 새로 시작할 때마다 초기화해주지 않아도 된다. 이미 방문한 격자라는 뜻은 그 격자를 통해 출구까지 갈 수 없음을 의미하니까.
또한 대체로 arr[n][m]의 형태로 주어지는 데 반해 이 문제는 arr[m][n]으로 주어졌다. 습관적으로 m과 n을 바꿔쓰는 경우가 많다. 이 부분을 실수하지 않도록 유의하자.
코드
// algorithm study
// BOJ_13565_침투
#include <iostream>
#include <vector>
using namespace std;
int m, n, visit[1010][1010] = {0}, chk = 0;
char arr[1010][1010];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
void dfs(int x, int y) {
visit[x][y] = 1;
if (x == m - 1) {
chk = 1;
return;
}
for (int i = 0; i < 4; i++) {
int newx = x + dx[i];
int newy = y + dy[i];
if (newx < 0 || newx >= m || newy < 0 || newy >= n || visit[newx][newy] == 1 || arr[newx][newy] == '1')
continue;
dfs(newx, newy);
if (chk == 1)
return;
}
}
int main() {
cin >> m >> n;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
for (int i = 0; i < n; i++) {
if (arr[0][i] == '0' && visit[0][i] == 0) {
dfs(0, i);
if (chk == 1) {
cout << "YES";
return 0;
}
}
}
cout << "NO";
return 0;
}
'☽ Algorithm > BOJ' 카테고리의 다른 글
[BOJ 백준] 10951번 A+B - 4 (0) | 2020.05.19 |
---|---|
[BOJ 백준] 4378번 트ㅏㅊ; (0) | 2020.05.18 |
[BOJ 백준] 2169번 로봇 조종하기 (0) | 2020.05.15 |
[BOJ 백준] 2304번 창고 다각형 (0) | 2020.05.13 |
[BOJ 백준] 1305번 광고 (0) | 2020.05.12 |
Comments