Algorithm 3

백준 15649, 15650, 15651, 15652번: N과 M 시리즈

백트래킹의 원리를 간단히 설명하자면 노드의 '유망성'을 판단한 후 해당 노드가 유망하지 않다면 부모 노드로 돌아가 다른 자식 노드를 찾는 것이다. 요컨데, 모든 경우의 수를 탐색하지만 그 중 가능성이 있는 경우의 수를 탐색한다는 점에서 Brute-Force 와 차별된다. 아래의 풀이는 백트랙킹을 사용해 작성한 알고리즘이며 DFS (깊이 우선 탐색)를 사용하여 트리 순회의 한 형태로 작성하였다. 백준 저지 링크 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import java.io.*; import java..

Algorithm 2023.01.26

백준 10835번: 카드게임

[백준 저지 링크] dp (다이네믹 프로그래밍) 을 이용해서 풀었는데, 핵심은 한번 방문했던 인덱스를 생략하면서 모든 경우의 수에 max를 구하는 것입니다. 1) 왼쪽 카드만 버리기 2) 왼쪽 오른쪽 모두 버리기 3) 오른쪽 카드만 버리기 를 Top-down 방식으로 풀면 됩니다. (dfs로 풀면 메모리 초과로 에러 납니다.) import java.io.*; import java.util.StringTokenizer; import java.util.Arrays; class Main { static int strToInt(String s) { return Integer.parseInt(s);} static int n; static int[] left; static int[] right; static int..

Algorithm 2023.01.17

백준 11729번: 하노이 탑 이동순서

[백준 저지 링크] 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 재귀에 수열을 얹은 문제입니다. 복잡한 풀이는 아니지만 수열 점화식을 만들고 재귀함수를 구현하는 아이디어를 착안해야 하는 문제입니다. [정답 코드 - Java] import java.io.*; import java.io.IOException; public class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); publ..

Algorithm 2023.01.16