개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.
해당 필기는
2024.02.15 - [Develop/algorithm] - [알고리즘] 백트래킹 (Backtracking) 에서 이어집니다.
목차
1. 기존 백트래킹 변형
2. 2차원 백트래킹
1. 기존 백트래킹 변형
앞선 포스팅에서 우리는 3가지 형태의 템플릿을 보았다.
이번엔 이를 다른 형태로 변환해 사용해보도록 하자.
이전의 백트래킹(1, 2, 3 템플릿)은 cur가 채운 개수 기준이었다.
새로운 백트래킹 형식은 다음과 같다.
여기서의 cur는 여태까지 본 원소의 개수, cnt는 고른 원소의 개수가 된다.
이를 실제 문제풀이 형식에 맞추어 변형해보면 다음과 같이 바뀐다.
만약 위 코드를 응용해, 3개 이하의 부분수열만을 출력하고 싶다면 다음과 같이 할수도 있다.
이제는 문제를 보면서 위 백트래킹 형식을 활용해보도록 하자.
2961번: 도영이가 만든 맛있는 음식
https://www.acmicpc.net/problem/2961
for문을 이용한 백트래킹보다 훨씬 깔끔하게 코드가 나오는 것을 확인할 수 있다.
2. 2차원 백트래킹
2차원 배열에서의 백트래킹은 어떻게 해야할까?
다음의 문제를 보며 알아보자.
16925번 : 매직 스퀘어로 변경하기
https://www.acmicpc.net/problem/16945
2차원 백트래킹의 핵심은 한 행이 끝나면 행을 0으로 바꾸고 열을 +1 하는 것이다.
'Develop > algorithm' 카테고리의 다른 글
[알고리즘] DP (Dynamic Programming) (0) | 2024.03.07 |
---|---|
[알고리즘] 백트래킹 1 (Backtracking) (0) | 2024.02.15 |
[알고리즘] 이진 탐색 (Binary Search) (0) | 2024.02.02 |
[알고리즘] 누적합 (Prefix Sum) (0) | 2024.01.26 |
[알고리즘] 투 포인터 (Two pointer) (0) | 2024.01.18 |