목록백준 백트래킹 (2)
이우의 개발일지
백준 14502번 연구소 문제 https://www.acmicpc.net/problem/14502 문제인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다.연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다.예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자.2 0 0 0 1 1 00 0 1..

백준 15650번 N과 M(2) 풀이 N과 M (2) 설명백트래킹은 완전 탐색과 비슷하게 하나하나 다 경우를 따져보는 알고리즘이다.일반적으로 다 따져보기 때문에 경우의 수가 큰 문제는 적용할 수 없다. 보통 재귀함수를 섞어서 쓰기 때문에 선행적으로 재귀에 대한 이해가 필요하다. 이 문제에서 볼 때 조건은 아래와 같이 2가지이다.조건 1. N개의 자연수를 M 개씩 나열한다.조건 2. 오름차순으로 나열한다. 조건 1을 따져보면 n개와 m개를 입력받고 재귀함수 안에서 m개의 조건을 충족하면 출력한다.bool issu[9];int list[9];int num = 0;int n, m;void func(int a) { if (num == m) { for (int i = 1; i i) continue; el..