목록Algorithm/C++ (148)
cgy12306
// https://www.acmicpc.net/problem/5052 // 전화번호 목록 #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int T, N; cin >> T; for (int t = 0; t > N; vector v; bool flag = false; for (int n = 0; n > s; v.push_back(s); } sort(v.begin(), v.end()); for (int i = 0; i < v.size() - 1; i++) {..
// https://acmicpc.net/problem/10546 // 배부른 마라토너 #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector participant; vector completion; unordered_map um; string answer = ""; int N; cin >> N; for (int i = 0; i > s; participant.push_back(s); } for (int i = 0; i < N - 1; i++) { string s; cin..
// https://www.acmicpc.net/problem/2156 // 포도주 시식 #include #include using namespace std; int arr[10001], dp[10001]; int N; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; for (int i = 3; i > arr[i]; } int sum = 0; for (int i = 3; i < N + 3; i++) { dp[i] = max(dp[i - 2] + arr[i], dp[i - 3] + arr[i - 1] + arr[i]); dp[i] = max(dp[i], dp[i - 1]..
// https://www.acmicpc.net/problem/1932 // 정수 삼각형 #include #include using namespace std; int arr[501][501], dp[502][502]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, res = 0; cin >> N; for (int i = 1; i arr[i][j]; } } dp[1][1] = arr[1][1]; for (int i = 2; i
// https://www.acmicpc.net/problem/10844 // 쉬운 계단 수 #include using namespace std; int dp[101][101]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); long long n, sum = 0; cin >> n; dp[1][0] = 0; for (int i = 1; i
// https://www.acmicpc.net/problem/9466 // 텀 프로젝트 #include #include using namespace std; int T, n, cnt = 0; int student[100002]; bool visited[100002], done[100002]; void dfs(int start) { visited[start] = true; int next = student[start]; if (!visited[next]) { dfs(next); } else if (!done[next]) { for (int i = next; i != start; i = student[i]) { cnt++; } cnt++; } done[start] = true; } int main() { ..
// https://www.acmicpc.net/problem/2146 // 다리 만들기 #include #include #include #include using namespace std; bool visited[101][101]; int N, map[101][101]; int dy[] = { -1, 1 , 0, 0 }; int dx[] = { 0, 0, -1, 1 }; int bridge = 987654321; int mapcnt = 2; // dfs void check(int x, int y) { visited[y][x] = true; map[y][x] = mapcnt; for (int i = 0; i < 4; i++) { int ax = x + dx[i]; int ay = y + dy[i]; if..
// https://www.acmicpc.net/problem/1167 // 트리의 지름 #include #include #include using namespace std; vector tree[100001]; bool visited[100001]; int sum = 0, sp; void dfs(int start, int length) { visited[start] = true; if (sum < length) { sum = length; sp = start; } for (auto next : tree[start]) { if (!visited[next.first]) { dfs(next.first, length + next.second); } } } int main() { ios::sync_with_st..