/images/logo.png

[백준]12787 지금 밥이 문제냐

https://www.acmicpc.net/problem/12787 풀이: IPv8 주소가 주어진다면, 정수로 정수가 주어진다면, IPv8 주소로 변환하여 출력한다. 정수의 범위가 64비트이므로 unsigned long long 형을 사용하도록 하자!! 코드: 사용언어 : c++ 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 #include <iostream>#include <string>#include <string.h>#define ul unsigned long long using namespace std; ul c; int main() { int i, t, y, n, m, d; cin >> n; while (n--) { string s; cin >> m; if (m == 1) { char *r = new char[40], *e; cin >> r; i = 8, c = 0; e = strtok(r, ".

[백준]17273 카드 공장 (Small)

https://www.acmicpc.net/problem/17273 풀이: 카드 1장을 공장장의 말에 따라 뒤집는다. 마지막 명령이 끝났을 때, 카드의 윗면에 그려진 숫자를 출력한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream>using namespace std; int main() { int n, m, a, b, d; cin >> n >> m >> a >> b; for (n = a; m--;) { cin >> d; if (n <= d) n = n == a ?

[백준]17271 리그 오브 레전설 (Small)

https://www.acmicpc.net/problem/17271 풀이: [백준]2624 동전 바꿔주기 참고 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 #include<iostream>using namespace std; long long d[10005] = { 1,1 }, n, m, i; int main() { cin >> n >> m; for (i = 2; i <= n; i++) d[i] = (d[i - 1] + (i - m >= 0 ? d[i - m] : 0)) % 1000000007; cout << d[n] << endl; }

[백준]17269 이름궁합 테스트

https://www.acmicpc.net/problem/17269 풀이: 이름 두개를 받은 후 글자의 획수를 더하여 한개씩 진행한다. 최종 더한 두 숫자를 출력한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <iostream>#include <vector>using namespace std; int main() { int n, m, i, t, q[26] = {3,2,1,2,4,3,1,3,1,1,3,1,3,2,1,2,2,2,1,2,1,1,1,2,2,1}; string a, b; cin >> n >> m >> a >> b; vector<vector<int>> v(1); for (i = 0, t = 0;; i++, t++) { if (i >= n && t >= m)break; if (i < n) v[0].

[백준]17268 미팅의 저주

https://www.acmicpc.net/problem/17268 풀이: n = 2 …. 1 n = 4 …. 2 n = 6 …. 5 n = 8 …. 14 . . . 1, 2, 5, 14 … 로 진행되는 수열인 카탈란 수 이다. 카탈란 수는 $$ C_i = {2i \choose i} - {2i \choose i + 1} $$ 이다. 이를 점화식으로 표현하면 $$ C_n = \sum_{i=0}^{n-1}C_iC_{n-1-i} $$ 이 된다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream>using namespace std; long long dp[5005] = { 1 }, n, i, t; int main() { cin >> n; for (i = 1; i <= n / 2; i++) { for (t = 0; t < i; t++) { dp[i] = (dp[i] + dp[t] * dp[i - 1 - t]) % 987654321; } } cout << dp[n / 2] << endl; }

[백준]17267 상남자

https://www.acmicpc.net/problem/17267 풀이: 스타트 지점부터 움직일 수 있는 지점으로 움직인다. 움직일 때, 왼쪽으로 움직였다면 left 값을 -1 해주고, 오른쪽으로 움직였다면 right값을 -1해주면서 움직이자. 주의사항 : 위아래를 한칸씩 움직일 경우 안되는 case가 존재. 움직일 수 있는 한도 내에서 다 움직이자!!. 코드: 사용언어 : c++ 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 #include <iostream>#include <vector>#include <queue>#include <string.