본문 바로가기

알고리즘/SWEA

(95)
2117. 홈 방범 서비스 static int board[20][20]; static int N, M; static int table[21]; static int d[4][2] = { -1, 0, 1, 0, 0, -1, 0, 1 }; typedef struct { int y, x, k; }base; static void table_init() { int cover = 1; for (int i = 1; i = N) return true; if (x = N) return true; return false; } static int get_home(int y, int x, int k) { int ret = 0; queue q; q.push({ y, x, k }); for (int i = 1; i < k; i++) { /..
1952. 수영장 static int price[4]; static int avail_days[12]; static int __solution(int d, int total) { if (d >= 12) return total; else { int ret = __solution(d + 1, total + avail_days[d] * price[0]); int r1 = __solution(d + 1, total + price[1]); if (r1 < ret) ret = r1; r1 = __solution(d + 3, total + price[2]); if (r1 < ret) ret = r1; return ret; } } static int solution() { for (int i = 0; i < 4; i++) scanf("..
4014. 활주로 건설 static int board[20][20]; static int N, X; static int __solution(int * ary) { int priv = ary[0], len = 1; int j; for (int i = 1; i 1 || diff 활주로 건설 불가 else if (diff == -1) //높이 차이가 -1, 위로 가는 경사로 설치가능 여부 확인 { if (len < X) //경사로를 설치할 수 없음 return 0; priv = ary[i]; //재설..
4013. 특이한 자석 static int K; static list magnetic[4]; //value: 0(N), 1(S) static pair rotation[8]; //magnetic info, direction(1: 시계, -1, 반시계) static bool visit[4]; static int score[] = { 1, 2, 4, 8 }; //회전 시키려고 할 때 양 옆에 다른 극 이 있는 경우에는 //인력에 의해 반대 방향으로 회전됨. static void __solution(int n, int d) { if (visit[n]) return; visit[n] = true; if (n - 1 >= 0) //왼쪽에 자석이 있으면 { list::reverse_iterator left = magnetic[n].rbeg..
5653. 줄기세포배양 static int N, M, K; //height, width, time static int board[800][800]; //timer static int state[800][800]; //1 -> 2 -> 3 : end static int org[800][800]; //original value static int winner[800][800]; //maximum static int d[4][2] = { -1, 0, //up 1, 0, //down 0, -1, //left 0, 1 //right }; static int solution() { queue q; queue qq; scanf("%d %d %d", &N, &M, &K); for (int y = 400; y < 400 + N; y++) { ..
4008. 숫자 만들기 static int N; static int ops[4]; // +, -, *, / static int numbers[12]; static int seq[11]; static int maximum, minimum; static void __solution(int cnt) { if (cnt >= N - 1) { int ret = numbers[0]; for (int i = 1; i < N; i++) { //헷갈릴 수 있으니, seq에 대한 인덱스도 따로 만들어서 사용하기를 권장, if (seq[i - 1] == 0) ret += numbers[i]; else if (seq[i - 1] == 1) ret -= numbers[i]; else if (seq[i - 1] == 2) ret *= numbers[i]..
4012. 요리사 #define ABS(X) ((X > 0) ? (X) : (-X)) using namespace std; static int N; static int board[16][16]; static int __solution(int start, int bitmap, int cnt) { if (cnt == N / 2) { vector material[2]; for (int i = 0; i < N; i++) { if ((bitmap & (1
5656. 벽돌 깨기 static int N, W, H; static int board[15][12]; static int selected[4]; static int bricks; static int d[4][2] = { -1, 0, //up 1, 0, //down 0, -1, //left 0, 1 //right }; static bool out_of_bound(int y, int x) { if (y = H) return true; if (x = W) return true; return false; } static int simulation() { int cpy[15][12], ret = 0; queue q; stack s; memcpy(cpy, board, sizeof(board)); f..
5658. 보물상자 비밀번호 static int N, K; static char Hexa[32]; static int table[255]; static int digit[] = { 0x1, 0x10, 0x100, 0x1000, 0x10000, 0x100000, 0x1000000, 0x10000000 }; static void table_init() { int n = 0; for (int i = '0'; i 두번째 for문에서 하는 것이 아니라 세번째 중 첫번째 for문에서 같이 이동해야 한다. 3. 문제에서 요구하는 바를 확실히 구현 할 것, -> 끝에거를 앞에 삽입하는 거 자체는 어렵지 않으나, 해당 코드를 넣는 것을 까먹고 있었음. 4. 문자열을 scanf로 입력받을 때 딸려오는 개행은 '\n'으로 처리 할 수 있다.
5644. 무선 충전 #define ABS(X) ((X > 0) ? X : -X) using namespace std; typedef struct { int y, x, c, p; }BC; static int M, A; static int d[5][2] = { 0, 0, //dont move -1, 0, //up 0, 1, //right 1, 0, //down 0, -1 //left }; //문제에서 제시하는 방향을 정확히 볼 것, static int find_max(vector& used, const vector & BCs) { int max = 0; //used가 사용할 수 있는 BC들의 리스트 중 충전양이 최대인 것을 찾는다. for (int i = 0; i < used.size(); i++) { int idx = use..