글 제목을 알고리즘이 아니라 1일 1백준으로 바꿔야하는게 아닌지 고민 중이다...
7568. 덩치
그냥 브루트 포스 사용하는 문제. 각 등수는 '나보다 덩치가 큰 사람 수'에 의해서 정해지기 때문에, 덩치가 큰 사람을 만나면 덩치가 큰 사람만의 랭크를 올리고, 나보다 덩치가 작은 사람을 만나면 내 랭크만을 올린다.
#include <iostream>
int main()
{
std::cin.tie(NULL);
std::ios_base::sync_with_stdio(false);
int n; //전체 사람 수
std::cin >> n;
int x[n], y[n], rank[n];
for (int i = 0; i < n; i++)
{
std::cin >> x[i] >> y[i];
}
for (int i = 0; i < n; i++)
{
rank[i] = n; //덩치 등수 배열 초기화
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (x[i] > x[j] && y[i] > y[j])
{
rank[i]--;
}
else if (x[i] < x[j] && y[i] < y[j])
{
rank[j]--;
}
else
{
rank[i]--;
rank[j]--;
}
}
}
for (int i = 0; i < n; i++)
{
std::cout << rank[i] << ' ';
}
return 0;
}
2231. 분해합
이것도 브루트포스인데 너무 생각없이 했었는지 첨엔 시간초과 떠서... 시간초과 안 뜨게 조금 바꿨더니 맞았다.
#include <iostream>
#include <cmath>
int main()
{
std::cin.tie(NULL);
std::ios_base::sync_with_stdio(false);
int n, min = 1000000, generator = 0, num, digit = 0;
std::cin >> n;
for (int i = 1; i < n; i++)
{
generator = 0;
digit = 0;
generator += i;
if (i < 10) generator += i;
else
{
num = i;
while (num != 0)
{
num /= 10;
digit++;
}
num = i;
for (int k = digit - 1; k >= 0; k--)
{
generator += int((num / pow(10, k)));
num %= int(pow(10, k));
}
}
if (generator == n && min > generator)
{
min = i;
}
}
if (min != 1000000)
std::cout << min << '\n';
else std::cout << 0 << '\n';
return 0;
}
본격적으로 알고리즘 더 손대기 전에 이미 아는 거부터 건들면서 시동걸기... 라고 우기기로.
'공부 > 알고리즘' 카테고리의 다른 글
[0608~0609] 알고리즘 (0) | 2021.06.10 |
---|---|
[0605~0606] 알고리즘 (0) | 2021.06.07 |
[0531] 알고리즘 (0) | 2021.05.31 |
[0530] 알고리즘 (0) | 2021.05.30 |
[0529] 알고리즘 (0) | 2021.05.29 |