[BOJ 1182] 부분수열의 합 (C++)
www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 구현 방법 이 문제는 백트래킹 알고리즘을 적용해야 하는 문제였습니다. 문제의 예제처럼 숫자가 [-7, -3, -2, 5, 8] 이 주어지면, 첫 번째 원소부터 총합으로 더할지 말지 선택하며 차례대로 뻗어나가는 알고리즘입니다. 다음 사진은 백준 문제의 예를 알고리즘에 적용한 설명을 하는 사진입니다. 노드의 값은 탐색하면서 만들어내는 총합을 표시하고, 입력된 수열의 첫번째 원소를..
2021. 5. 11.
[BOJ 7562] 나이트의 이동 (C++)
www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 구현 방법 이 문제의 분류는 BFS입니다. BFS문제는 보통 상, 하, 좌, 우로 움직이는데, 이 문제는 나이트의 이동 방식으로 8가지 방법을 확인해야 합니다. 로직 자체는 BFS와 동일하지만, 이동 방향을 8가지로 한다는 차이점 뿐입니다. 보통의 BFS는 이동을 위해 다음과 같은 배열을 선언합니다. int dx[4] = {1, 0, -1, 0} int dy[4] = {0, 1, 0, -1} 하지만 나이트의 이동..
2021. 4. 9.