Algorithm(202)
-
[백준] 14500번: 테트로미노
14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net #include #include #define MAX 501 using namespace std; int n, m, ans; int map[MAX][MAX]; int visit[MAX][MAX]; const int dy[4] = { 0,0,1,-1 }; const int dx[4] = { 1,-1,0,0 }; void dfs(int y, int x, int cnt, int sum) { if (cnt == 4) { if (ans < sum) ans = sum; re..
2021.03.29 -
[백준] 2156번: 포도주 시식
2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net #include #include using namespace std; int main() { int n; int w[10001]; int dp[10001][2] = { 0, }; cin >> n; for (int i = 1;i > w[i]; } dp[1][0] = w[1]; for (int i = 2;i
2021.02.15 -
[백준] 17086번: 아기 상어2
17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸의 개수가 한 개 이상인 입력만 주어진다. www.acmicpc.net #include #include #include #include #define MAX 51 using namespace std; const int dy[48] = { 1,-1,0,0,1,-1,1,-1 }; const int dx[8] = { 0,0,1,-1,-1,-1,1,1 }; int n, m; int map[MAX][MAX]; int visit[MAX][MAX]; vectorpos; void bfs(int a, int b) { fo..
2021.02.15 -
[백준] 13305번: 주유소
13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net #include #include using namespace std; long long solution(vector&dist, vector&cost) { long long total = 0; int idx = 0; total += cost[0] * dist[1]; for (int i = 1;i < dist.size() - 1;i++) { if (cost[i] < cost[idx]) { total += cost[i] * dist[i + 1]; idx ..
2021.02.14 -
[백준] 1298번: 노트북의 주인을 찾아서
1298번: 노트북의 주인을 찾아서 어느 날 모든 학생들은 한 명이 한개의 노트북을 가지고 공부하던 도중, 자리를 바꾸다가 그만 노트북이 뒤섞이고 말았다. 대다수의 학생들은 자신의 노트북을 잘 알고 있어서 자신의 노트북을 www.acmicpc.net #include #include #define MAX 101 using namespace std; bool c[MAX]; int d[MAX]; vectorp[MAX]; bool dfs(int x) { for (int i = 0;i < p[x].size();i++) { int y = p[x][i]; if (c[y]) continue; c[y] = true; if (d[y] == 0 || dfs(d[y])) { d[y] = x; return true; } } r..
2021.02.13 -
[백준] 2188번: 축사 배정
2188번: 축사 배정 농부 존은 소 축사를 완성하였다. 축사 환경을 쾌적하게 유지하기 위해서, 존은 축사를 M개의 칸으로 구분하고, 한 칸에는 최대 한 마리의 소만 들어가게 계획했다. 첫 주에는 소를 임의 배정해 www.acmicpc.net #include #include #define MAX 201 using namespace std; int d[MAX]; bool c[MAX]; vectorh[MAX]; bool dfs(int x) { for (int i = 0;i < h[x].size();i++) { int y = h[x][i]; if (c[y]) continue; c[y] = true; if (d[y] == 0 || dfs(d[y])) { d[y] = x; return true; } } retur..
2021.02.13