/images/logo.png

[백준]11052 붕어빵 판매하기

https://www.acmicpc.net/problem/11052 풀이: 붕어의 개수가 i개 일 때를 b[i] 라고 놓고 b[i] = (t개 일때 가격 + 남은 붕어 빵의 가격) 과 b[i] 개중 큰값을 넣음. 구하고자 하는 n개 즉 b[n]을 찾음. 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <iostream>#include <algorithm>using namespace std; int main(void) { int n, m, w; int a[1002]; int b[1002] = { 0 }; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= n; i++) { for (int t = 0; t < i; t++) { b[i] = max(b[i], b[t] + a[i - t]); } } cout << b[n] << endl; return 0; }

[백준]1004 어린왕자

https://www.acmicpc.net/problem/1004 풀이: 시작점과 도착점이 같이 원안에 있지않을 때, 시작점, 도착점이 원 안에 있다면 카운트를 ++ 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include <iostream>#include <math.h>using namespace std; int main(void) { int T; cin >> T; for (int i = 0; i < T; i++) { int n, x1, x2, y1, y2; int x[50]; int y[50]; int r[50]; int count = 0; cin >> x1 >> y1 >> x2 >> y2 >> n; for (int t = 0; t < n; t++) { cin >> x[t] >> y[t] >> r[t]; } for (int t = 0; t < n; t++) { if (sqrt((x1 - x[t])*(x1 - x[t]) + (y1 - y[t])*(y1 - y[t])) < r[t]) { if (sqrt((x2 - x[t])*(x2 - x[t]) + (y2 - y[t])*(y2 - y[t])) >= r[t]) count++; } if (sqrt((x2 - x[t])*(x2 - x[t]) + (y2 - y[t])*(y2 - y[t])) < r[t]) { if (sqrt((x1 - x[t])*(x1 - x[t]) + (y1 - y[t])*(y1 - y[t])) >= r[t]) count++; } } cout << count << endl; } return 0; }

[백준]1010 다리놓기

https://www.acmicpc.net/problem/1010 풀이: 서쪽 다리(N)에서 동쪽 다리(M)로 연결 이므로 조합인 mCn 을 사용 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <iostream>using namespace std; int Comb(int n, int r) { if (r == 0 || r == n) return 1; else if (r == n - 1 || r == 1) return n; return Comb(n - 1, r) + Comb(n - 1, r - 1); } int main(void) { int T,n,m; cin >> T; for (int i = 0; i < T; i++) { cin >> n >> m; cout << Comb(m, n) << endl; } return 0; }

[백준]1718 암호

https://www.acmicpc.net/problem/1718 풀이: 평문에서 암호문을 뺀다. 만약 뺀 값이 0 이하일경우 z로 돌아간다. 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <iostream>#include <string>using namespace std; int main(void) { string a; getline(cin, a); string key; cin >> key; char cy[30001] = { NULL }; for (int i = 0; i < a.length(); i++) { if (a[i] == ' ') cy[i] = ' '; else if ((int)a[i] - (int)key[i%key.

[백준]2578 빙고

https://www.acmicpc.net/problem/2578 풀이: 빙고를 저장 사회자가 말하는 번호에 빙고판에 1 저장 빙고판 가로 세로 대각선 2개 판별 빙고가 3개 넘어가면 끝 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <iostream>#include <map>using namespace std; int main(void) { map<int, int> a; int b[25] = { 0 }; int c[25]; int num; int count = 0; for (int i = 0; i < 25; i++) { cin >> num; a[num] = i; } for (int i = 0; i < 25; i++) { cin >> num; b[a[num]] = 1; if (b[(a[num] / 5) * 5] == 1 && b[((a[num] / 5) * 5) + 1] == 1 && b[((a[num] / 5) * 5) + 2] == 1 && b[((a[num] / 5) * 5) + 3] == 1 && b[((a[num] / 5) * 5) + 4] == 1) count++; if (b[a[num] % 5] == 1 && b[a[num] % 5 + 5] == 1 && b[a[num] % 5 + 10] == 1 && b[a[num] % 5 + 15] == 1 && b[a[num] % 5 + 20] == 1) count++; if ((a[num] % 4 == 0 && a[num] !

[백준]1932 숫자삼각형

https://www.acmicpc.net/problem/1932 풀이: 첫 줄부터 밑에줄까지 내려가면서 값을 더해감 더한 값중 제일 큰 값을 찾음 코드: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <iostream>using namespace std; int q[501][501]; int good[501][501]; int main(void) { int num; int big = 0; cin >> num; for (int i = 0; i < num; i++){ for (int t = 0; t < i + 1; t++){ cin >> q[i][t]; } } good[0][0] = q[0][0]; for (int i = 1; i < num; i++) { for (int t = 0; t < i+1; t++){ if(t==0) good[i][t] = good[i - 1][t] + q[i][t]; else if (i == t) good[i][t] = good[i - 1][t - 1] + q[i][t]; else { if (good[i - 1][t - 1] > good[i - 1][t]) good[i][t] = good[i - 1][t - 1] + q[i][t]; else good[i][t] = good[i - 1][t] + q[i][t]; } } } for (int i = 0; i < num; i++) { if (good[num - 1][i] > big) big = good[num - 1][i]; } cout << big << endl; return 0; }