완전탐색
-
1012.유기농 배추알고리즘/백준 BAEK JOON 2020. 5. 26. 00:33
이번에 풀어볼 문제는 백준의 1012 유기농 배추이다! 이 문제는 BFS나 DFS를 이용해서 풀면 되는데 역시나 난이도는 높지않다. 여기서 배울 점은 나눠진 영역의 탐색(BFS, DFS)을 진행하는 방법이다. BFS를 기준으로 설명을 적어놓았다 -> DFS든 BFS든 탐색방법만 다를 뿐 구현 로직은 같다. 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 � www.acmicpc.net 이 문제에서 Key Point는 1. 맵에 배추를 잘 넣어주는 로직과 2. 영역별로 나눠져 있는 배추를 탐색하는 것이다. 1번은 간단하기 때문에 조금만 생각하면 가능니..
-
14502.연구소알고리즘/백준 BAEK JOON 2020. 5. 25. 07:09
이번 문제는 연구소이다. 꽤 많이 중요한 내용을 배우고 상기할 수 있는 문제였다. 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 이 문제를 푸는데 핵심은 맵을 복사해서 사용한다는 것과 나머지는 탐색이다. 난이도는 어려운 수준이 아닌 거 같지만 초보자에게 연습하기는 좋은 문제인 것 같다( 난 초보자 ㅠㅠ.. 너무좋네...) 재귀함수 관련된 문제를 조금 더 풀어봐야할 것 같다. * 문제풀면서 중요한점 1. 문자, 특수기호 실수 => 실수로 자꾸 if문 다음에 변수에 값을 대입할 때 "=" 대신 "=="를 사용하여 틀림 주의..
-
2798.블랙잭알고리즘/백준 BAEK JOON 2020. 4. 23. 01:34
이번문제는 블랙잭이다. 그냥 순열을 이용한 완전탐색으로 풀었다. for문을 여러번 돌리거나 재귀함수를 써도 풀 수 있을 것 같다. 2798번: 블랙잭 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 www.acmicpc.net #include #include #include us..
-
11403.경로찾기알고리즘/백준 BAEK JOON 2020. 3. 16. 23:19
이번에 풀어볼 문제는 백준의 11403 경로찾기이다. 문제를 이해하는게 어려웠던거 같다. 크흠... 이해력을 기르자!! 해당 문제는 정점이 갈 수 있는 경로를 물어보는 문제였다. 정점과 연결된 간선에는 방향이 존재했다는 것이 바로 이 문제의 포인트다! #include #include #include #define MAX 101 // 주의 -> 나는 배열을 0이 아닌 1부터 적용했다. 그러므로 101 using namespace std; int n; // 정점의 수 int arr[MAX][MAX]; // Map bool check[MAX]; // 방문확인 void dfs(int a){ stack s; s.push(a); // n번째 줄 내용 int v = s.top(); // 해당 스..
-
2178. 미로탐색알고리즘/백준 BAEK JOON 2020. 3. 15. 01:06
이번에 풀어볼 문제는 백준의 2178 미로탐색이다. 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net DFS를 이용하여 문제를 풀었다. #include #include using namespace std; #define MAX 100 int dx[4]={-1,1,0,0};// X 좌표 이동범위 int dy[4]={0,0,-1,1};// Y 좌표 이동범위 // -> 상하좌우 int arr[MAX][MAX]; // 미로 int n, m; void bfs(int v, int w){ queueq; q.push(make_pair(..