Programming/백준
-
[백준 : 2750번] 수 정렬하기Programming/백준 2021. 7. 29. 18:50
문제 N개의 수가 주어졌을 때, 이 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.를 오름차순으로 정렬하는 프로그램을 작성하시오. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. #include #include inline void Swap(int& a, int& b) { int t = a; a = b; b = t; } int main(void) { std::cin.tie(NULL); std::cout.tie(NULL); std::cin.sync_with_stdio(false); int N; std::cin >> N; std::v..
-
[백준 2798번] : 블랙잭Programming/백준 2021. 7. 20. 07:47
문제 N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오. 입력 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다. 출력 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다. 브루트 포스 문제인 만큼 세 카드를 더할 수 있는 모든 경우의 수를 구하고 그중 M하고 제일 가까워지는 값을 구하면 된다. 시간 복잡도는 O(N^3) 이다. #include #include int main(void) { s..
-
4153번 : 직각삼각형Programming/백준 2021. 5. 5. 09:38
#include #include bool Predicate(const int x, const int y, const int r) { int pred1 = std::max(x, y); int max = std::max(pred1, r); if (max == pred1) { if (pred1 == x) { return (x * x == ((y * y) + (r * r))); } else { return (y * y == ((x * x) + (r * r))); } } else { return (r * r == ((x * x) + (y * y))); } } int main(void) { std::cin.tie(NULL); std::cout.tie(NULL); std::cin.sync_with_stdio(fals..
-
3009 : 네 번째 점Programming/백준 2021. 5. 5. 09:20
쉬운 문제를 너무 어렵게 생각했던 것 같다. #include struct Point { int x; int y; }; int main(void) { std::cout.tie(NULL); std::cin.tie(NULL); std::cin.sync_with_stdio(false); Point p1, p2, p3, p4; std::cin >> p1.x >> p1.y; std::cin >> p2.x >> p2.y; std::cin >> p3.x >> p3.y; if (p1.x == p2.x) p4.x = p3.x; else if (p1.x == p3.x) p4.x = p2.x; else // (p2.x == p3.x) p4.x = p1.x; if (p1.y == p2.y) p4.y = p3.y; else if..
-
1085번 : 직사각형에서 탈출Programming/백준 2021. 5. 3. 22:10
#include #include int main(void) { std::cout.tie(NULL); std::cin.tie(NULL); std::cin.sync_with_stdio(false); int x, y, w, h; std::cin >> x >> y >> w >> h; int x1 = std::abs(x - w); int x2 = x; int xMin = std::min(x1, x2); int y1 = abs(y - h); int y2 = y; int yMin = std::min(y1, y2); std::cout
-
9020 : 골드바흐의 추측Programming/백준 2021. 5. 2. 15:42
사전에 미리 아리스토텔레스의 체를 활용하여 소수들을 담아두고 있는 테이블을 만들었다. a + b = c일때 c랑 a를 알고 있으면 b를 알 수 있기 때문에(b = c - a) 이 방식으로 O(N^2)의 복잡도를 O(N)으로 줄였다. #include #include void PrimePartition( int& a, int& b , std::vector& primeTable, int num) { a = 0; b = 0; for (int i = 0; i < num; i++) { if (!primeTable[i]) continue; int j = num - i; if (!primeTable[j]) continue; if (a != 0 && b != 0 && abs(a - b) < abs(i - j)) cont..