/images/logo.png

[백준]1261 알고스팟

https://www.acmicpc.net/problem/1261 풀이: [C++]다익스트라 알고리즘(Dijkstra Algorithm) 참고 코드: 사용언어 : 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 35 36 37 38 39 40 #include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std; int N, M, b[102][102], q, w, e, dp[102][102]; int main() { cin >> M >> N; fill(dp[0], dp[0] + 10201, 987654321); vector<string> v(N); priority_queue<pair<int, pair<int, int>>> p; p.

[백준]1120 문자열

https://www.acmicpc.net/problem/1120 풀이: a 와 b의 (0번째 ~ a의 길이) 의 차이의 개수 a 와 b의 (1번째 ~ a의 길이) 의 차이의 개수 . . . a 와 b의 ()(b의 길이 - a의 길이)번째 ~ a의 길이) 의 차이의 개수 중 가장 작은것을 출력한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream>using namespace std; int main() { int c = 51; string a, b; cin >> a >> b; for (int i = 0; i <= b.

[백준]1158 요세푸스 문제

https://www.acmicpc.net/problem/1158 풀이: K번째 사람을 출력한다. K번째 사람을 배열에서 삭제한다. 삭제한 지점을 기준으로 K번째 사람을 출력한다. 반복한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream>#include <vector>using namespace std; int N, K, c; int main() { cin >> N >> K; vector<int> a; for (int i = 1; i <= N; i++) a.push_back(i); c = K - 1; cout << "<"; while (a.

[백준]1159 농구 경기

https://www.acmicpc.net/problem/1159 풀이: 각 선수의 성의 첫글자를 확인한다. a ~ z 까지의 배열 에서 첫글자에 해당하는 배열을 +1 해준다. a~ z 까지 확인한다. 5명 이상인 글자는 출력한다. 만약, 출력한 글자가 없다면, “PREDAJA” 를 출력한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream>using namespace std; int N, a[26], b = 0, i = 26; int main() { cin >> N; while(N--) { string s; cin >> s; a[122 - s[0]]++; } while(i--) if (a[i] > 4) { b = 1; cout << char(122 - i); } if (!

[백준]1182 부분수열의 합

https://www.acmicpc.net/problem/1182 풀이: N개의 정수로 이루어진 수열을 a라고 했을 때, a의 부분수열을 모두 탐색하여 그 합이 S가 되는 갯수를 출력한다. 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream>using namespace std; int N, S, a[22], s = 0; void B(int x, int y) { if (x > -1 && y == S) s++; while(++x < N) B(x, y + a[x]); } int main() { cin >> N >> S; for (int i = 0; i < N; i++) cin >> a[i]; B(-1, 0); cout << s << endl; }

[백준]1197 최소 스패닝 트리

https://www.acmicpc.net/problem/1197 풀이: 배열 v를 현재 만들어진 트리에 들어있는 노드들의 집합 이라고 하자. 시작할 때 배열 v에 1 하나만 넣고 시작한다. 배열 v를 모두 순회하여 현재 트리에서 뻗어갈 수 있고, 가중치가 가장 작은 간선을 찾는다. 간선을 연결 한 후 연결된 노드를 배열 v에 저장한다. 배열 v에 모든 정점이 들어올때까지 반복한다. 트리에 모든 가중치를 더해 출력한다. 코드: 사용언어 : 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 35 36 #include <iostream>#include <queue>#include <vector>using namespace std; typedef pair<int, int> P; int N, E, q, w, e, b[10002] = { 1,1 }; vector<priority_queue<P, vector<P>, greater<P>>> a; int main() { cin >> N >> E; a.