본문 바로가기

Algorithm Problems

(212)
[백준/C++] 1912번: 연속합 문제 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 요약 n개의 정수로 이루어진 수열에서 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 출력한다. 단, 수는 한 개 이상 선택해야 한다. 코드 #include #define MAX 100000 using namespace std; int n; int arr[MAX]; int dp[MAX]; // dp[i]: i번째 수를 포함하면서, i번째 수까지 수열 중 최대 합 int main(..
[백준/C++] 2579번: 계단 오르기 문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 요약 계단 오르기 게임은 계단 시작점에서 꼭대기에 위치한 도착점까지 가는 게임이다. 계단에는 해당 계단 층의 점수가 쓰여 있고, 밟으면 그 점수를 획득한다. 1. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 2. 연속된 세 계의 계단을 모두 밟아서는 안된다. (단, 시작점은 포함 x) 3. 마지막 도착 계단은 반드시 밟아야 한다. 오를 계단 정보를 받고, 게임에서 얻을 수 ..
[백준/C++] 7453번: 합이 0인 네 정수 문제 https://www.acmicpc.net/problem/7453 7453번: 합이 0인 네 정수 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. www.acmicpc.net 문제 요약 정수로 이루어진 크기가 같은 배열 A, B, C, D가 있을 때, A[a], B[b], C[c], D[d]의 합이 0이 되는 쌍의 개수를 출력한다. + 각 배열의 크기 n은 1이상 4000이하이다. 코드 #include #include #include #define MAX_N 4000 using namespace std; int n; int arr[4][MAX_N..
[백준/C++] 18428번: 감시 피하기 문제 https://www.acmicpc.net/problem/18428 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net 문제 요약 N × N 크기의 칸으로 이루어진 복도에는 선생님, 학생, 장애물이 위치할 수 있다. 몇 명의 학생들이 수업시간에 몰래 복도로 빠져나왔는데, 선생님들의 감시에 들키지 않는 것이 목표이다. 각 선생님들은 자신의 위치에서 상,하,좌,우 4가지 방향으로 감시한다. + 단, 장애물 뒷 편에 숨은 학생들은 볼 수 없다. 복도 정보가 주어졌을 때, 정확히 3개의 장애물을 설치하여 모..
[백준/C++] 16953번: A -> B 문제 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A 1. 2를 곱한다. 2. 1을 수의 가장 오른쪽에 추가한다. 코드 #include #include #define ll long long using namespace std; ll a, b; ll res = 1e9; void dfs(ll x, ll cnt) { // a가 연산을 거쳐서 b가 되었다면 if (x == b) { res = min(res, cnt); // 최소 연산 횟수 갱신 ret..
[백준/C++] 1240번: 노드사이의 거리 문제 https://www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 첫째 줄에 노드의 개수 $N$과 거리를 알고 싶은 노드 쌍의 개수 $M$이 입력되고 다음 $N-1$개의 줄에 트리 상에 연결된 두 점과 거리를 입력받는다. 그 다음 줄에는 거리를 알고 싶은 $M$개의 노드 쌍 www.acmicpc.net 문제 요약 N개의 노드로 이루어진 트리가 주어졌을 때, M개의 두 노드 쌍을 입력 받고 두 노드 사이의 거리를 출력한다. 코드 #include #include #include #include #define MAX_N 1000 using namespace std; int n, m; int start_node, end_node; bool visited[MAX_N + 1]; v..