목록알고리즘 풀이 (63)
하다보니
/* 연구소에 벽을 세우려고! nxm 직사각형. 바이러스는 상하좌우 퍼져나감 새로 세울 수 있는 벽의 개수 3개. 꼭 3개 세워야 함. 0은 빈칸, 1은 벽, 2는 바이러스 안전영역 크기의 최댓값. 문제 풀이 방법 - 우선 빈칸중에 벽을 세울 수 있는 3개의 조합을 구한다. - 해당 경우에 따라 벽을 세워서 2가 퍼져나가는 것을 구하고 - 빈칸의 개수를 세어 안전영역을 구한다. -> 최댓값. */ #include #include #include #include #define X first #define Y second using namespace std; int n, m;//세로 크기 n과 가로 크기 m int board1[10][10];//원본 int board2[10][10];//복사본 vector ..
/* 2048 문제 - 게임판을 상하좌우로 기울인다. 5번 기울여서 최대값을 고른다. -> 모든 경우의 수를 다 확인. - 게임판을 기울이면 숫자가 기울면서 합쳐진다. -> 상하좌우는 게임판을 돌려서 구현하고, 기울여서 합쳐지는 함수 */ #include #include using namespace std; int n;//한변의 길이 int board1[25][25];//입력받는 원본 게임판 int board2[25][25]; //복사하여 최대값을 구하려는 것 void rotate() { int tmp[25][25]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) tmp[i][j] = board2[i][j]; for (int i = 0; i < n; ..
#include #include using namespace std; int n, k; deque belt;//컨베이어벨트 내구도 deque check;//로봇 체크 int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> k; for (int i = 0; i > x; belt.push_back(x); check.push_back(false); } int tot = 0; while (1) { int cnt = 0; for (int i = 0; i = k) { cout = 0; i--) { if (check[i] ..
#include #include #include #include #include #define X first #define Y second using namespace std; int n, m; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; string board[1005]; vector wall; queue q; vector dis; int vis[1005][1005]; int bfs() { q.push({ 0,0 }); for (int i = 0; i < n; i++)fill(vis[i], vis[i] + m, 0); vis[0][0] = 1; while (!q.empty()) { pair cur = q.front(); q.pop(); for (int i..
#include #include using namespace std; int s[305]; int d[305][3]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 1; i > s[i]; d[1][1] = s[1]; d[1][2] = 0; d[2][1] = s[2]; d[2][2] = s[1] + s[2]; if (n == 1) { cout
#include using namespace std; int d[20]; int main() { ios::sync_with_stdio(0); cin.tie(0); d[1] = 1; d[2] = 2; d[3] = 4; for (int i = 4; i > t; while (t--) { int n; cin >> n; cout
#include #include using namespace std; int d[1000001]; int main() { ios::sync_with_stdio(0); cin.tie(0); int x; cin >> x; d[1] = 0; for (int i = 2; i
#include #include #include #include #include using namespace std; bool mask[25]; string board[5]; int ans; int dx[4] = { 1,-1,0,0 }; int dy[4] = { 0,0,1,-1 }; int main() { ios::sync_with_stdio(0); cin.tie(0); for (int i = 0; i > board[i]; fill(mask + 7, mask + 25, true); do { queue q; int dasom = 0; int adj = 0; bool isp7[5][5] = {}; bool vis[5][5] = {}; for (int i = 0; i < 25; i+..
#include #include using namespace std; int n, m; int board[10]; int arr[10]; bool isused[10]; void func(int k) { if (k == m) { for (int i = 0; i m; for (int i = 0; i > board[i]; sort(board, board + n); func(0); }