https://www.acmicpc.net/problem/4963
풀이: 모든 지도를 순회한다.
만약 지도의 한 부분이 땅이라면,
연결된 모든 땅을 바다로 바꾼 후 섬의 개수를 +1 해준다.
지도의 모든 부분이 바다로 바뀔때까지 반복한다.
섬의 개수를 출력한다.
코드: 사용언어 : 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>using namespace std; int n, m, i, t, a[52][52], c; void I(int x, int y) { a[x][y] = 0; if (x > 0 && y > 0 && a[x - 1][y - 1]) I(x - 1, y - 1); if (x > 0 && a[x - 1][y]) I(x - 1, y); if (x > 0 && y + 1 < n && a[x - 1][y + 1]) I(x - 1, y + 1); if (y > 0 && a[x][y - 1]) I(x, y - 1); if (y + 1 < n && a[x][y + 1]) I(x, y + 1); if (x + 1 < m && y > 0 && a[x + 1][y - 1]) I(x + 1, y - 1); if (x + 1 < m && a[x + 1][y]) I(x + 1, y); if (x + 1 < m && y + 1 < n && a[x + 1][y + 1]) I(x + 1, y + 1); } int main() { while (1) { cin >> n >> m; c = 0; if (!
https://www.acmicpc.net/problem/5543
풀이: 햅버거 중 가장 싼 것 + 음료 중 가장 싼 것 - 50원
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 #include <iostream>using namespace std; int a,b,c,d,e; int main() { cin >> a >> b >> c >> d >> e; a = a < b ? a : b; a = a < c ? a : c; d = d < e ?
https://www.acmicpc.net/problem/1373
풀이: 2진수를 8진수로 변환하여 출력.
변환하는 방법은
11001100(2) 일때,
뒤에서 부터 3자리로 끊어서 생각한다.
011 001 100
-> 3 1 4
주어진 수의 ‘길이’ 가 1,000,000 까지 갈 수 있으므로 주의하자.
(수가 1,000,000 이 아니다. 수의 길이 이므로 엄청나게 큰 수가 들어온다.)
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream>#include <string>using namespace std; int b, c, i, t; int main() { string s, a; cin >> s; for (i = s.
https://www.acmicpc.net/problem/1389
풀이: [C++]플로이드-와샬 알고리즘(Floyd-Warshall 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 #include <iostream>#include <algorithm>using namespace std; int N, M, q, w, d[102][102], a, s = 987654321, c, i, t, y; int main() { cin >> N >> M; for (i = 0; i < M; i++) { cin >> q >> w; d[q][w] = 1; d[w][q] = 1; } for (i = 1; i <= N; i++) for (t = 1; t <= N; t++) if (i !