-
[BOJ] 10448 : 유레카 이론
10448 : 유레카 이론 풀이 1000 이하인 삼각수를 모두 구해보자! 그러한 (1000 이하인) 삼각수의 개수가 얼마 되지 않으므로 3중 for문 돌면서 완전탐색 해주면 된다! 코드 #include <stdio.h> #include <vector> using namespace std; int tc, n, ans; vector<int> v; int main() { for (int i = 1; i*(i+1)/2 <= 1000; i++) v.push_back(i*(i+1)/2); for (scanf("%d", &tc); tc--;) { scanf("%d", &n); ans = 0; for (int i : v) for (int j : v) for (int k :...
-
[BOJ] 3085 : 사탕 게임
3085 : 사탕 게임 풀이 맵의 크기가 50*50밖에 되지 않는다 (!) 인접한 칸을 swap하는 경우도 최대 50*49*2번밖에 되지 않는다 (!!) 모든 (x, y)를 돌면서 스왑 놀이를 해보자~! 코드 #include <stdio.h> #include <algorithm> using namespace std; const int dx[] = { 0,1 }; const int dy[] = { 1,0 }; int n, ans; char a[55][55]; int check() { int ret = 1, cnt = 1; for (int i = 1; i <= n; i++) { for...
-
[BOJ] 10251 : 운전 면허 시험
10251 : 운전 면허 시험 풀이 dp[i][j][k][d] = (i, j)까지 방향을 k번 틀고 d방향에서 왔을 때의 최소 연료량 아 졸리다 자세한 풀이는 다른 블로그를 보는 게 더 좋겠다! 코드 #include <stdio.h> #include <string.h> int min(int a, int b) { return a < b ? a : b; } int n, m, l, g, dp[102][102][102][2], gas[102][102][2]; int main() { int T; for (scanf("%d", &T); T; T--) { scanf("%d %d %d %d", &n, &m, &l, &g); for...
-
[BOJ] 10252 : 그리드 그래프
10252 : 그리드 그래프 풀이 항상 사이클을 만들 수 있다. 첫 번째 행을 제외하고 ㄹ 모양으로 돌다가 마지막에 첫 번재 행으로 돌아와서 올라가주면 된다. 코드 #include <stdio.h> int main() { int tc; for (scanf("%d", &tc); tc; tc--) { int n, m, i, j; scanf("%d %d", &n, &m); puts("1"); for (i = 0; i < m; i++) printf("(%d,%d)\n", 0, i); for (i = 1; i < n; i++) { if (i % 2) for (j =...
-
[BOJ] 1520 : 내리막 길
1520 : 내리막 길 풀이 메모이제이션 하면서 탐색해주자!! 코드 #include <stdio.h> const int dx[] = { 0,1,0,-1 }; const int dy[] = { 1,0,-1,0 }; int n, m, a[505][505], d[505][505]; int dfs(int x, int y) { if (x == n && y == m) return 1; if (~d[x][y]) return d[x][y]; d[x][y] = 0; for (int i = 0; i < 4; i++) { int nx = x + dx[i], ny = y + dy[i]; if...