#include #include #include #include #include using namespace std; vector v; int visit[1001]; void dfs(int idx) { visit[idx] = 1; printf("%d ", idx); sort(v[idx].begin(), v[idx].end()); for (int i = 0; i < v[idx].size(); i++) { if (visit[v[idx][i]] == 0) dfs(v[idx][i]); } } int main() { int n, m, start; queue q; scanf("%d %d %d", &n, &m, &start); v.resize(n + 1); int x, y; for (int i = 0; i < m; ..
#include #include using namespace std; vector v; int visit[1001]; void dfs(int idx) { visit[idx] = 1; for (int i = 0; i < v[idx].size(); i++) { if (visit[v[idx][i]] == 0) dfs(v[idx][i]); } } int main() { int n, m; scanf("%d %d", &n, &m); v.resize(n + 1); int x, y; for (int i = 0; i < m; i++) { scanf("%d %d", &x, &y); v[x].push_back(y); v[y].push_back(x); } int count = 0; for (int i = 1; i
#include int coin[10]; int main(void) { int i, n, k, div; int result = 0; scanf("%d %d", &n, &k); for (i = 0; i < n; i++) scanf("%d", &coin[i]); for (i = 1; i < n; i++) { div = (k % coin[i]) / coin[i - 1]; result += div; k -= coin[i - 1] * div; } result += k / coin[n - 1]; printf("%d", result); return 0; } 풀이: 15분 코딩: 6분 개선: 17분 인접한 동전이 배수관계임에 힌트를 얻었다. 크기가 작은 동전들로 큰 동전을 대체할 수 있으며 큰 동전으로 표현할 수 없다..
#include char candy[50][50]; int n; void swap(char* a, char* b) { char temp; temp = *a; *a = *b; *b = temp; } int max(int a, int b) { return a > b ? a : b; } int checkAll() { int i, j, count; int MAX = -1; char before; for (i = 0; i < n; i++) { count = 1; before = candy[i][0]; for (j = 1; j < n; j++) { if (candy[i][j] == before) { count++; MAX = max(MAX, count); } else { MAX = max(MAX, count); c..
#include int number[7]; int separate(int n, int *arr) { int i = 0, digit = 0; while(1) { arr[i] = n % 10; n /= 10; if (n == 0) { digit = i + 1; break; } i++; } return digit; } int main(void) { int i, j, num, digit, sum; int MIN = 2000000; scanf("%d", &num); digit = separate(num, number); for (i = num - 1; i + (9 * digit) >= num; i--) { sum = i; digit = separate(i, number); for (j = 0; j < digit;..
#include #include using namespace std; int height[9]; int main(void) { int i, j, n, k; int sum = 0, find = 0; for (i = 0; i < 9; i++) { scanf("%d", &height[i]); sum += height[i]; } sort(height, height + 9); for (i = 0; i < 9; i++) { sum -= height[i]; for (j = i + 1; j < 9; j++) { sum -= height[j]; if (sum == 100) { find = 1; break; } sum += height[j]; } if (find == 1) break; sum += height[i]; } ..