-
[BOJ] 2698 : 인접한 비트의 개수
2698 : 인접한 비트의 개수 풀이 그리워하면 언젠가 만나게 되는 코드 #include <stdio.h> int q, n, k, d[111][111][2]; int main() { d[1][0][0] = d[1][0][1] = 1; for (n = 2; n <= 100; n++) for (k = 0; k < n; k++) d[n][k][0] = d[n-1][k][0] + d[n-1][k][1], d[n][k][1] = d[n-1][k][0] + (k ? d[n-1][k-1][1] : 0); for (scanf("%d", &q); q--;) scanf("%d %d", &n, &k), printf("%d\n", d[n][k][0] + d[n][k][1]); return 0; } 아무말 백준, 백준 온라인...
-
[BOJ] 9084 : 동전
9084 : 동전 풀이 그리워하면 언젠가 만나게 되는 코드 #include <stdio.h> #include <string.h> int main() { int T, N, M, p, i, j, n[21], d[10001]; scanf("%d", &T); while (T--) { scanf("%d", &N); memset(n, 0, sizeof(n)); memset(d, 0, sizeof(d)); for (i = 1; i <= N; i++) scanf("%d", &n[i]); scanf("%d", &M); d[0] = 1; for (i = 1; i <= N; i++) for (j = 0; j <= M - n[i]; j++) d[j + n[i]] +=...
-
[BOJ] 1783 : 병든 나이트
1783 : 병든 나이트 풀이 깁잇투유마눈눈눈눈눈눈눈빛 쏟아지는마터터터터터터터터치 코드 #include <stdio.h> int n, m; int main() { scanf("%d %d", &n, &m); if (n == 1) puts("1"); else if (n == 2) { if (m <= 6) printf("%d", (m + 1) / 2); else puts("4"); } else { if (m <= 4) printf("%d", m); else if (m == 5 || m == 6) puts("4"); else printf("%d", m - 2); } return 0; } 아무말 백준, 백준 온라인...
-
[BOJ] 1410 : 패턴의 개수
1410 : 패턴의 개수 풀이 bitmask dp를 해보자! 근데 이거 풀이를 어떻게 써야하지 dp[len][bit] = 패턴의 길이를 len까지만 놓고 볼 때, 마스킹 된 패턴에만 일치하는 길이 len짜리 문자열의 수 코드 #include <iostream> #include <string> using namespace std; const int mod = 1000003; int n, k; int dp[50][1 << 15]; string str[15]; int main() { cin.tie(0); ios_base::sync_with_stdio(0); cin >> n >> k; for (int i = 0; i < n; i++) cin >> str[i]; int len...
-
[BOJ] 1051 : 숫자 정사각형
1051 : 숫자 정사각형 풀이 주위를 둘러보면 온통 네모난 것들 뿐인데~ 코드 #include <stdio.h> int n, m, k, i, j; char a[55][55]; int main() { scanf("%d %d", &n, &m); for (i = 0; i < n; i++) scanf("%s", a[i]); k = n < m ? n : m; while (k--) for (i = 0; i < n - k; i++) for (int j = 0; j < m - k; j++) if (a[i][j] == a[i][j+k]...
-
[BOJ] 1049 : 기타줄
1049 : 기타줄 풀이 단가 후려치기 ㄱㄱ 코드 #include <stdio.h> int min(int a, int b) { return a < b ? a : b; } int n, m, a = 1e9, b = 1e9, c, d; int main() { scanf("%d %d", &n, &m); while (m--) { scanf("%d %d", &c, &d); a = min(a, c); b = min(b, d); } a = min(a, b*6); printf("%d", n/6*a + min(a, (n%6)*b)); return 0; } 아무말 백준, 백준 온라인...
-
[BOJ] 9252 : LCS 2
9252 : LCS 2 풀이 http://codersbrunch.blogspot.kr/2016/12/9252-lcs-2.html 코드 #include <stdio.h> #include <algorithm> int dp[1234][1234]; char s1[1234], s2[1234]; void f(int i, int j) { if (!dp[i][j]) return; if (s1[i] == s2[j]) { f(i-1, j-1); putchar(s1[i]); } else dp[i-1][j] > dp[i][j-1] ? f(i-1, j) : f(i, j-1); } int main() { scanf("%s\n%s", s1 + 1, s2 + 1); int i, j; for (i = 1; s1[i]; i++) for (j = 1; s2[j]; j++) dp[i][j] = std::max({ dp[i-1][j], dp[i][j-1],...
-
[BOJ] 11000 : 강의실 배정
11000 : 강의실 배정 풀이 일반적으로 스위핑 해서 풀면 (start == end)인 경우를 처리하기가 까다롭다. pq를 이용해서 풀어주자. 코드 #include <stdio.h> #include <queue> #include <algorithm> using namespace std; typedef pair<int, int> pii; int n; pii p[200002]; priority_queue<pii> pq; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d", &p[i].first, &p[i].second); } sort(p, p + n); for (int i = 0; i < n; i++) { int s =...
-
[BOJ] 1449 : 수리공 항승
1449 : 수리공 항승 풀이 앞에서부터 순서대로 덮어주면 된다 파이프 터진 순서가 정렬되어 있다는 얘기가 없으니 정렬도 꼭 해주자 코드 #include <stdio.h> #include <algorithm> int n, l, a[1001]; int main() { scanf("%d %d", &n, &l); for (int i = 0; i < n; i++) scanf("%d", &a[i]); std::sort(a, a + n); int tmp = a[0], cnt = 1; for (int i = 0; i < n; i++) if (tmp + l - 1 < a[i]) tmp...
-
[BOJ] 4796 : 캠핑
4796 : 캠핑 풀이 룰루랄라 코드 #include <stdio.h> int a, b, c, d; int main() { while (1) { scanf("%d %d %d", &a, &b, &c); if (!a && !b && !c) break; printf("Case %d: %d\n", ++d, c/b*a + (c%b < a ? c%b : a)); } return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이