-
[BOJ] 1541 : 잃어버린 괄호
1541 : 잃어버린 괄호 풀이 아무도 얘기하지 않는 몇 해가 쉽게 지나 버리고 휑하니 텅 빈 가슴속으로 눈꽃 송이 내려앉는다 아무리 잠들어도 캄캄한 바람 지날 뿐 어떤 꿈도 만나지 못해 코드 #include <cstdio> int sum, tmp, f, n; char s[55] = {1}; int main() { scanf("%s", s+1); for (int i = 1; s[i-1]; i++) { if ('0' <= s[i] && s[i] <= '9') { n *= 10; n += s[i] - '0'; } else if...
-
[BOJ] 1138 : 한 줄로 서기
1138 : 한 줄로 서기 풀이 사람 마음이 참 생각처럼 되질 않아 쓴웃음에 한 번 더 미련을 삼켜 보곤 해 미워하고 싶은데 그것조차 잘 안 돼 너의 기억은 너무나 찬란해 잠 못 들게 해 코드 #include <cstdio> #include <vector> using namespace std; int n, x, a[12]; vector<int> v; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } v.push_back(n); for (int i = n-1; i >= 1;...
-
[BOJ] 2294 : 동전 2
2294 : 동전 2 풀이 가져가 지독한 그리움 기억 속 널 다시 데러가 난 아무렇지 않은 척 애를 써도 또다시 울컥하고 말아 아직도 난 코드 #include <cstdio> int n, k, t, d[100001]; int main() { scanf("%d %d", &n, &k); for (int i = 1; i <= k; i++) { d[i] = 1e9; } for (int i = 1; i <= n; i++) { scanf("%d", &t); for (int j = t; j <= k; j++) {...
-
[BOJ] 2133 : 타일 채우기
2133 : 타일 채우기 풀이 둠두둠칫 코드 #include <cstdio> int main() { int n, d[31] = { 1,0,3 }; scanf("%d", &n); for (int i = 4; i <= n; i += 2) { d[i] = d[i - 2] * 3; for (int j = 4; j <= i; j += 2) d[i] += d[i - j] * 2; } printf("%d", d[n]); return 0; } 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++,...
-
[BOJ] 1149 : RGB거리
1149 : RGB거리 풀이 d[i][0] = max(d[i-1][1], d[i-1][2]) d[i][1] = max(d[i-1][0], d[i-1][2]) d[i][2] = max(d[i-1][0], d[i-1][1]) 코드 #include <bits/stdc++.h> using namespace std; int N, r, g, b, R, G, B; int main() { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d %d %d", &r, &g, &b); r += min(G, B); g += min(R, B); b += min(R, G); R = r; G = g; B = b; } printf("%d", min(min(R,...
-
[BOJ] 2156 : 포도주 시식
2156 : 포도주 시식 풀이 . 코드 int max(int a, int b) { return a > b ? a : b; } n, a, b, c, A, B, C, w; main() { for (scanf("%d", &n); n--;) { scanf("%d", &w); C = c, B = b, A = a; c = B + w; b = A + w; a = max(max(A, B), C); } printf("%d", max(max(a, b), c)); } 아무말 백준, 백준 온라인 저지, BOJ,...
-
[BOJ] 2437 : 저울
2437 : 저울 풀이 일단 주어진 추들의 무게를 정렬해 보자. 1~w까지의 모든 무게를 만들 수 있다고 가정하자. 1~w를 만들 수 있다면 여기에 무게 k의 추를 추가해서 1~w+k까지의 모든 무게를 만들 수 있다. 하지만 만약 k > w+1이라면 w+을 만들 수 없게 된다. 이제 코드로 옮겨보자. 코드 #include <cstdio> #include <algorithm> int n, a[1001]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } std::sort(a, a+n); int mx...
-
[BOJ] 2618 : 경찰차
2618 : 경찰차 풀이 dp[i][j] = 경찰차1이 i번째 사건, 경찰차2가 j번째 사건의 위치에 있을 때 거리 합의 최소값 일반성을 잃지 않고, max(i, j)까지의 사건들을 모두 처리했다고 하자. 지금 처리할 사건을 k번째라고 하자. (k = max(i,j)+1) dst(i, j)는 i번째 사건과 j번째 사건 사이의 거리를 구하는 함수라고 하자. 경찰차1이 k번째 사건을 처리하려면, dp[k][j] = dp[k-1][j] + dst(k, k-1) 경찰차2가 k번째 사건을 처리하려면, dp[i][k] = dp[i][k-1] + dst(k, k-1) 점화식을 잘 정의했다면 여기까지 어렵지 않게 떠올릴 수 있다....
-
[BOJ] 1344 : 축구
1344 : 축구 풀이 각각의 팀이 골을 넣고 말고 하는 경우의 수는 총 4가지 모두 계산해 주자 코드 #include <cstdio> int p[12] = { 0,1,4,6,8,9,10,12,14,15,16,18 }; double a, b, d[19][19][19]; int main() { scanf("%lf %lf", &a, &b); a /= 100, b /= 100; d[0][0][0] = 1; for (int t = 0; t <= 17; t++) { for (int x = 0; x <= t; x++) { for (int y = 0; y <= t; y++)...
-
[BOJ] 9657 : 돌 게임 3
9657 : 돌 게임 3 풀이 다 찢겨져버린 사이 더 기워봐도 다시 그때로 우리 되돌려 놓을 수 없는 그 얘기 날카롭게 패인 이 상처가 깊어 나을 수 없으니 떠나가요 코드 #include <cstdio> int n, d[1001]; int main() { scanf("%d", &n); d[1] = d[3] = d[4] = 1; for (int i = 5; i <= n; i++) { if (!(d[i-1] && d[i-3] && d[i-4])) { d[i] = 1; } } puts(d[n] ? "SK" : "CY"); return...