이걸 알고리즘이라 할 수 있나...? 그냥 백준에서 푼 간단한 문제...
2798. 블랙잭
그냥 브루트포스 문제... 중간에 이상한 곳에서 실수해서 삽질 좀 했는데 아무튼...
#include <iostream>
int main()
{
int n, m;
int sum = 0, max = 0;
std::cin >> n;
std::cin >> m;
int cards[n];
for (int i = 0; i < n; i++)
{
std::cin >> cards[i];
}
for (int i = 0; i < n; i++)
{
sum = 0;
if (cards[i] < m)
{
sum += cards[i];
}
else continue;
for (int j = i + 1; j < n; j++)
{
if (sum + cards[j] < m)
{
sum += cards[j];
for (int k = j + 1; k < n; k++)
{
if (sum + cards[k] <= m)
{
sum += cards[k];
if (sum > max)
{
max = sum;
}
sum -= cards[k];
}
}
sum -= cards[j];
}
}
}
std::cout << max << '\n';
return 0;
}
1002. 터렛
중딩들 수학이었나? 거기 나오는 원의 위치관계 이용하는 문제... 인데 한 원이 다른 원 안에 있는 경우를 뒤늦게 생각해내서 또 삽질함.
#include <iostream>
#include <cmath>
int main()
{
int x1, x2, y1, y2, r1, r2, testCase;
std::cin >> testCase;
for (int i = 0; i < testCase; i++)
{
std::cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
if (x1 == x2 && y1 == y2)
{
if (r1 != r2)
std::cout << 0 << '\n';
else std::cout << -1 << '\n';
continue;
}
if (pow(x2 - x1, 2) + pow(y2 - y1, 2) == pow(r1 + r2, 2))
{
std::cout << 1 << '\n';
continue;
}
if (pow(x2 - x1, 2) + pow(y2 - y1, 2) > pow(r1 + r2, 2))
{
std::cout << 0 << '\n';
continue;
}
if (pow(x2 - x1, 2) + pow(y2 - y1, 2) < pow(r1 + r2, 2))
{
if (pow(x2 - x1, 2) + pow(y2 - y1, 2) == pow(r1 - r2, 2))
std::cout << 1 << '\n';
else if (pow(x2 - x1, 2) + pow(y2 - y1, 2) < pow(r1 - r2, 2))
std::cout << 0 << '\n';
else std::cout << 2 << '\n';
continue;
}
}
return 0;
}
'공부 > 알고리즘' 카테고리의 다른 글
[0605~0606] 알고리즘 (0) | 2021.06.07 |
---|---|
[0601] 알고리즘 (0) | 2021.06.01 |
[0530] 알고리즘 (0) | 2021.05.30 |
[0529] 알고리즘 (0) | 2021.05.29 |
과제 5 (1) | 2021.01.05 |