일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- DP
- backtracking
- 삼성SW 역량 테스트 기출문제
- Programmers
- C++
- 시장 선거 포스터 c++
- 주린이
- 2370 c++
- 15651c++
- 백준 1697
- 15651
- DFS
- 에라토스테네스의 체
- BFS
- fill함수
- 용어 정리
- 위상정렬
- 백준 2370
- 삼성 SW 역량 테스트 기출 문제
- 백준 15651
- 백트레킹
- 주식 용어
- 주식 용어 정리
- 백준알고리즘
- 백준
- MySQL
- 백준 알고리즘
- 브루트포스
- 삼성 SW역량 테스트
- Today
- Total
목록백준 1697 (2)
빠켱이
14502번은 bfs문제이자 브루트 포스 문제입니다. 문제를 푸는 방법은 다음과 같습니다. 1. 벽을 3개 세울 수 있는 모든 경우의 수를 따진다. 2. 해당 경우의 수 마다 바이러스가 퍼지지 않은 안전 영역의 크기를 구한다. 3. 구한 안전 영역의 크기중 가장 큰 값을 출력합니다. #include #include #include #include using namespace std; int n, m, result = 0; int map[9][9], map2[9][9]; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; queue q; void count_zero(int arr[9][9]); void make_wall(int n); void bfs(); int m..
1697번은 bfs문제입니다. 틀에서 크게 벗어나진 않습니다. 풀이 방법은 시작 지점에서 *2, +1, -1 하는 경우를 queue에 넣으며 visit배열의 값을 바꿔주고 한번 실행할 때마다 time변수의 값을 늘려주며 같아질 때 종료해주는 방법으로 풀이하시면 됩니다. #include #include using namespace std; bool visit[100001]; int n, m; int bfs(int n, int m) { int time = 0; queue q; q.push(n); while(1) { int size = q.size(); for(int i=0; i 0 && visit[n-1] == 0) { q.push(n-1); visit[n-1] = 1; } if(n < 100000 && v..