목록알고리즘/백준 (59)
쌓고 쌓다
https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net #include #include #include #include using namespace std; int parent[100001]; int N,res; vector v[3]; // 좌표,i번째 행성 vector planet; // dis,A번째 행성,B번째 행성 int Find(int x) { if (parent[x] == x) return x; return ..
https://www.acmicpc.net/problem/2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net #include #include using namespace std; queue q; int arr[50][50]; int visit[50][50]; int side[4][2] = { {-1,0},{1,0},{0,-1},{0,1} }; int res = 987654321; int N; void BFS() { q.push(make_pair(0, make_pair(0, 0))); visit[0][0]..
https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net #include #include #include #include using namespace std; vector v; int N; int arr[101]; bool visit[101]; void DFS(int start, int cur) { if (visit[cur]) { if (start == cur) v.push_back(arr[start]); return; } visit[cur..
https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net #include #include using namespace std; bool visit[2001]; int res = 0; int N,M; vector v[2001]; void DFS(int cur, int cnt) { if (cnt == 5) // A,B,C,D,E 5명이 연결이 되었으므로 가능함 { res = 1; return; } for (int i = 0; i < v[cur].size(); i++) { if (visit[v[cur][i]] == false) { visit[v[cur][i]] =..
https://www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름 www.acmicpc.net #include #include using namespace std; int arr[21][21]; int area[21][21]; int population[5]; int N; int res = 987654321; void FindRes() { for(int i=1;i
https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net #include #include using namespace std; int N; int arr[1001][3]; int dp[1001][3]; int res = 987654321; int main(void) { cin >> N; for (int i = 0; i > arr[i][0] >> arr[i][1] >> arr[i][2]; for (i..
https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net #include #include using namespace std; int N; int arr[1001][3]; int dp[1001][3]; int res = 987654321; int main(void) { cin >> N; for (int i = 0; i > arr[i][0] >> arr[i][1] >> arr[i][2]; for (i..
https://www.acmicpc.net/problem/2169 2169번: 로봇 조종하기 첫째 줄에 N, M(1≤N, M≤1,000)이 주어진다. 다음 N개의 줄에는 M개의 수로 배열이 주어진다. 배열의 각 수는 절댓값이 100을 넘지 않는 정수이다. 이 값은 그 지역의 가치를 나타낸다. www.acmicpc.net #include #include using namespace std; int arr[1001][1001]; int dp[1001][1001][3]; int side[3][2] = { {0,-1},{0,1},{1,0} }; bool visit[1001][1001]; int N, M; int DFS(int y, int x, int dir) { if (y == N - 1 && x == M - ..