목록분류 전체보기 (169)
하다보니
#include #include using namespace std; int n;//시험장 개수 vector people; int b, c;//총감독관 감시 응시자수, 부감독관 감시 응시자 수 int main() { cin >> n; for (int i = 0; i > x; people.push_back(x); } cin >> b >> c; long long tot=0; for (int i = 0; i < n; i++) { if (people[i] - b
#include #include #include #include #define X first #define Y second using namespace std; int n, m; pair red, blue; // 빨간 구슬과 파란 구슬의 위치 string board[11]; // dist[a][b][c][d] : 빨간 구슬이 (a, b)이고 파란 구슬이 (c, d)에 위치한 상황에 도달하기 위한 동작의 횟수 int dist[11][11][11][11]; int dx[4] = { 0, 1, 0, -1 }; int dy[4] = { 1, 0, -1, 0 }; int bfs() { queue q; q.push({ red.X, red.Y, blue.X, blue.Y }); dist[red.X][red.Y][bl..
/* 뱀이 나와서 기어다닌다. 사과를 먹으면 뱀 길이가 늘어난다. 벽이나 자기 자신의 몸과 부딪히면 게임 끝. nxn 정사각 보드 위에서 진행. 몇몇 칸에는 사과가 놓여져 있다. 뱀의 길이는 1이다. 처음엔 오른쪽을 향한다. */ #include #include #define X first #define Y second using namespace std; int n;//보드의 크기 int k;//사과의 개수 int board[105][105]; int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; int vis[105][105]; queue snake; queue tail; int main() { cin >> n; cin >> k; //사과의 위치 for (int i =..
#include using namespace std; int board[25][25]; int ndice[6]; int dice[6]; int dx[4] = { 0,0,-1,1 }; int dy[4] = { 1,-1,0,0 }; void go(int dir) { //동:1 서:2 북:3 남:4 switch (dir) { case 0: ndice[0] = dice[0]; ndice[1] = dice[4]; ndice[4] = dice[3]; ndice[5] = dice[1]; ndice[2] = dice[2]; ndice[3] = dice[5]; break; case 1: ndice[0] = dice[0]; ndice[1] = dice[5]; ndice[2] = dice[2]; ndice[3] = dice..
#include #include #include using namespace std; deque dq[4]; void go(int num,int dir) { int dirs[4] = {}; dirs[num] = dir; int idx = num; //왼쪽으로 전파 while (idx > 0 && dq[idx][6] != dq[idx - 1][2]) { dirs[idx - 1] = -dirs[idx]; idx--; } idx = num; //오른쪽으로 전파 while (idx < 3 && dq[idx][2] != dq[idx + 1][6]) { dirs[idx + 1] = -dirs[idx]; idx++; } for (int i = 0; i < 4; i++) { if (dirs[i] == 1) { dq[i..
void func(vector vect) 위와 같이 vector를 매개변수로 두어 함수를 호출한 경우는 함수 안에서 값을 바꾸더라도 해당 함수가 반환된 이후인 main함수에서는 영향이 없다. 따라서 호출한 함수 안에서 vector값을 변경하고 싶은 경우에는 vector를 값에 의한 호출(call by value)가 아닌, 아래와 같이 참조에 의한 호출( call by reference)를 이용해야 한다. void func(vector &vect)
/* 수와 수 사이에 끼워넣을 수 있는 n-1개 연산자 있음. n개 숫자 있음. 숫자는 변경 불가. 식의 계산은 연산자 우선 순위를 무시하고, 앞에서부터 진행되어야 한다. 나눗셈은 정수 나눗셈으로 몫만 취한다. 음수를 양수로 나눌 때는 양수로 바꾼 후 몫을 음수로 한 것. */ #include #include #include using namespace std; int n,x; int num[15]; int num_copy[15]; vector oper; int result; //차례대로 +:0 -:1 x:2 %:3 개수 int cal(int x,int y,int op) { if (op == 0) { return x + y; } if (op == 1) { return x - y; } if (op == 2..
/* 연구소에 벽을 세우려고! 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] ..