250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 쉬운 알고리즘 문제
- 알고리즘 문제
- 코테 준비
- sw expert
- 원서읽기
- 삼성
- 코테 대비
- nightroutine
- STUDYENGLISH
- readingbook
- 완전탐색
- D4
- 코딩테스트
- 직무면접
- 프로그래머스
- sw expert academy
- 원서
- the midnight library
- swexpertacademy
- 알고리즘
- SQL
- MySQL
- 백준
- English
- PyQt
- BFS
- englishbook
- 원서읽자
- 코테
- dfs
Archives
- Today
- Total
시나브로
15683. 감시 본문
728x90
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
typedef struct node {
int i;
int j;
};
vector<vector<int>> list = { {0,0,0,0},{0,1,0,0},{0,1,0,1},{1,1,0,0}, {1,1,0,1},{1,1,1,1} };
int dx[] = {-1,0,1,0 };
int dy[] = {0,1,0,-1 };
int N, M;
int max_check;
vector<int> shift(vector<int> i) {
vector<int> k;
k.push_back(i[3]);
k.push_back(i[0]);
k.push_back(i[1]);
k.push_back(i[2]);
return k;
}
void dfs(vector<vector<int>> map, int check, queue<node> qu) {
if (qu.empty()) {
if (max_check < check)
max_check = check;
return;
}
node value = qu.front();
qu.pop();
int k = map[value.i][value.j];
vector<int> key = list[k];
int n = value.i;
int m = value.j;
for (int i = 0; i < 4; i++) {
int check1 = check;
vector<vector<int>> map1 = map;
for (int j = 0; j < 4; j++) {
if (key[j] == 1) {
n = value.i;
m = value.j;
while (1) {
n += dx[j];
m += dy[j];
if (n >= 0 && n < N && m >= 0 && m < M) {
if (map1[n][m] == 6)
break;
if (map1[n][m] == 0) {
check1++;
map1[n][m] = 7;
}
}
else
break;
}
}
}
dfs(map1, check1, qu);
key = shift(key);
}
}
int main() {
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
cin >> N >> M;
vector<vector<int>> map;
int check = 0;
queue<node> qu;
for (int i = 0; i < N; i++) {
vector<int> a;
map.push_back(a);
for (int j = 0; j < M; j++) {
int k;
cin >> k;
if (k == 0)
check++;
if (k != 0 && k != 6)
qu.push({ i,j });
map[i].push_back(k);
}
}
dfs(map, 0, qu);
cout << check - max_check;
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
17142. 연구소3 (0) | 2020.10.17 |
---|---|
19238. 스타트 택시 (0) | 2020.10.17 |
14890. 경사로 (0) | 2020.10.15 |
3190. 뱀 (0) | 2020.10.14 |
14891. 톱니바퀴 (0) | 2020.10.14 |
Comments