백트래킹

문제https://www.acmicpc.net/problem/15684 15684번: 사다리 조작사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선www.acmicpc.net 접근법N이 10이하, H가 30이하이기 때문에 완전 탐색으로 풀어도 되겠다고 생각했다. 그리고 놓여진 가로선의 개수가 최솟값보다 큰 경우와 3보다 큰 경우를 가지치기 할 수 있기 때문에 백트래킹을 사용했다. 문제에서 보여주고 있는 사다리를 2차원 배열로 표현하였고, 아래와 같이 배열의 값을 통해 사다리 존재 여부를 판단했다. 0: 빈칸1: 왼쪽으로 이동할 수 있는 사다리 존재2: 오른쪽으로 이동..
문제https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱www.acmicpc.net 접근법전형적인 완전 탐색 + 백트래킹 문제의 유형이었다. 연산자의 우선 순위를 무시하고, 연산자의 개수가 N-1개로 주어진다는 점에서 출제자가 오히려 배려를 해준 것이 아닌가.. 싶었다. 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream..
문제https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.www.acmicpc.net 접근법주어진 능력치에 규칙이 있는 것이 아니기 때문에 완전 탐색을 해야겠다고 생각했다. 재귀 호출과 visited[] 배열을 사용한 완전 탐색을 사용했다.  코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { ..