2024-02-29
-벽 부수고 이동하기 3(16933, 백준) 벽부수고이동하기와 같은 로직을 사용한다. dis[i][j][k][t] = 좌표 (i, j) 까지 k번 벽을부수며 갈때 t(밤, 낮구분)시간까지 흐른 시간으로 나타내며, BFS로 그래프 전체를 탐색하며 답을 찾을 수 있다. 더보기 #include #include #include using namespace std; int n, m, k; int map[1010][1010]; int dis[1010][1010][15][5]; int dx[5] = { 0, 0, 1, -1 }; int dy[5] = { 1, -1, 0, 0 }; struct dat { int x, y, br, time; }; void BFS(int x, int y) { int i, j; queue ..
2024-02-28
-분수의 합(1735, 백준) 두 분수를 입력받아 두 분수의 합을 기약분수의 형태로 나타내는 문제이다. 우선, 두분수를 통분시킨후, 만들어진 분수의 분자, 분모를 가지고 GCD를 돌리면 되는 간단한 문제이다.(기약분수 -> 서로소 = GCD 가 1인경우) 더보기 #include int a, b; int c, d; int GCD(int x, int y) { if (y == 0) return x; else return GCD(y, x % y); } int main() { int i, j; scanf("%d %d", &a, &b); scanf("%d %d", &c, &d); int x = (a * d) + (c * b); int y = d * b; while (1) { int gc; if (x > y) gc ..
2024-02-27
-자리배정(10157, 백준) N범위가 1000임으로 그냥 구현하면 된다. 정말 힘든 구현문제라고 생각한다. x, y변수를 잡아주어, x, y를 증가, 감소시켜가며 사각형을 채운뒤 k번째 좌표값을 출력하였다. 자꾸 이상한데 수가 덮어져서 한참 디버깅했다. 미리 조건들을 써놓고 코딩하면 좋을듯 하다. 더보기 #include int map[1010][1010]; int main() { int i, j; int C, R, K; scanf("%d %d %d", &C, &R, &K); int cnt = 1; int x = 1, y = 1; int now_cnt = 0, now_dis = 1, dis = 1; if (C * R < K) { printf("0"); return 0; } while (1) { if (K..