본문 바로가기

알고리즘/SWEA

(95)
7103 static int N, sels[5]; static int table[32767 + 1]; static int __solution(int s, int v, int cnt) { if (v == N) { //해당 수를 이루는 조합을 확인 할 수 있다. return 1; } if (cnt
5648. 원자 소멸 시뮬레이션 typedef struct { int y, x, dir, k; }info; static int N; static int board[4096][4096]; static int visit[4096][4096]; static int collision[4096][4096]; static int d[4][2] = { 1, 0, -1, 0, 0, -1, 0, 1 }; static vector vec; static int solution() { int x, y, dir, K, ret = 0; scanf("%d", &N); for (int cnt = 0; cnt < N; cnt++) { scanf("%d %d %d %d", &x, &y, &dir, &K); x += 1000; y += 1000; x *= 2; y *=..
1953. 탈주범 검거 static int N, M, R, C, L; static int board[50][50]; static bool visit[50][50]; static queue q; static int d[4][2] = { -1, 0, //up 1, 0, //down 0, -1, //left 0, 1 //right }; static int types[4][4] = { 1, 2, 4, 7, //위로갈 수 있는 type 1, 2, 5, 6, //아래로 갈 수 있는 type 1, 3, 6, 7, //좌로 갈 수 있는 type 1, 3, 4, 5 //우로 갈 수 있는 type }; static int avail[4][4] = { 1, 2, 5, 6, //위로 갈 때 필요한 type 1, 2, 4, 7, //아래로 갈 때 필..
2112. 보호 필름 static int D, W, K; static int board[13][20]; static int injection[13]; static int cpy[13][20]; static bool check() { memcpy(cpy, board, sizeof(board)); for (int y = 0; y < D; y++) { if (injection[y] == 2) continue; //주입 하려는 성분으로 해당 row를 변경 for (int x = 0; x < W; x++) cpy[y][x] = injection[y]; } for (int x = 0; x < W; x++) { int priv = cpy[0][x], cnt = 1; for (int y = 1; y < D; y++) { if (priv =..
2105. 디저트 카페 static int N; static int board[20][20]; static int d[4][2] = { 1, 1, 1, -1, -1, -1, -1, 1 }; static bool out_of_bound(int y, int x) { if (y = N) return true; if (x = N) return true; return false; } static int travel(int y, int x, int j, int k) { int visit[101], ret = 0; int lens[] = { j, k, j, k }; //d의 방향 순서와 동일하게 memset(visit, 0, sizeof(visit)); for (int dir = 0; dir < 4; d..
2382. 미생물 격리 static int N, M, K; static int board[2][100][100]; //현재, 다음, 방향 static int direction[2][100][100]; static int d[5][2] = { 0, 0, //X -1, 0, //상 1, 0, //하 0, -1, //좌 0, 1 //우 }; static int changed[] = { 0, 2, 1, 4, 3 }; static bool out_of_bound(int y, int x) { if (y = N - 1) return true; if (x = N - 1) return true; return false; } static int solution() { int y, x, n, dir, turn ..
2383. 점심 식사시간 static int N; static int board[10][10]; static int choice[10]; static vector people; static vector stairs; static int ans; static int simulation() { int timer[10], total = people.size(), t; queue q, qq[2]; int state[10]; for (int i = 0; i < people.size(); i++) { int which = choice[i]; int dy = people[i].first - stairs[which].first; int dx = people[i].second - stairs[which].second; timer[i] = abs..
1949. 등산로 조성 //2차원 배열 문제 풀이 시 //항상 d[4][2], visit, out_of_bound()는 정의하고 시작할 것. //out_of_bound -> visit -> ... static int N, K; static int board[8][8]; static int ans; static bool visit[8][8]; static int d[4][2] = { -1, 0, 1, 0, 0, -1, 0, 1 }; static bool out_of_bound(int y, int x) { if (y = N) return true; if (x = N) return true; return false; } static void __solution(int y, int x, int le..
2115. 벌꿀 채취 static int N, M, C; static int board[10][10]; static pair maximum[10]; //row, value static int table[10][10]; static int cmp(const void * p1, const void * p2) { int n1 = (*(pair *)p1).second; int n2 = (*(pair *)p2).second; return n2 - n1; } static void __solution(int * ary, int s, int v, int t, int y, int x) { if (s >= M) { if (t > table[y][x]) table[y][x] = t; if (t > maximum[y].second) maximum..
2477. 차량 정비소 static int N, M, K, A, B; static int reception[10]; //original value static int repair[10]; //original static int reception_timer[2][10]; //고객번호, 타이머 static int repair_timer[2][10]; //고객번호, 타이머 static bool is_finish() { for (int i = 1; i