- 1번 몸무게 > 2번 몸무게 && 1번 키 > 2번 키 이면 1번이 2번 보다 덩치가 크다
- 나의 덩치 순위는 나보다 덩치큰 사람 + 1
- 2 ≤ n ≤ 50, 10 ≤ 몸무게, 키 ≤ 200
2. 접근방법
- 브루트 포스
- 한명을 기준으로 나머지(n-1)명의 덩치를 비교
3. 시간복잡도
- 한명을 기준으로 나머지(n-1)명의 덩치를 비교 : n-1
- 총 n명 이므로 : n * (n - 1) ≒ 2500
4. 회고
- 할게 없음
소스코드
#include<iostream>
using namespace std;
int n, h[51][2];
int main(void){
cin >> n;
for (int i = 0; i < n; i++)
cin >> h[i][0] >> h[i][1];
for (int i = 0; i < n; i++){
int cnt = 1;
for (int j = 0; j < n; j++){
// i == j인 경우는 몸무게와 키가 같기 때문에 등수에 영향이 없음
if (h[i][0] < h[j][0] && h[i][1] < h[j][1])
cnt++;
}
cout << cnt << " ";
}
return 0;
}
[출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음]
#include<iostream>
using namespace std;
int K, S[14], P[6];
void dfs(int index, int in, int size){
if (size == 6){
for (int i = 0; i < 6; i++)
cout << P[i] << " ";
cout << "\n";
return;
}
for (int i = index; i < K; i++){
P[in] = S[i];
dfs(i + 1, in + 1, size + 1);
}
}
int main(void){
freopen("Text.txt", "r", stdin);
while ((cin >> K) && K != 0){
for (int i = 0; i < K; i++)
cin >> S[i];
dfs(0, 0, 0);
cout << "\n";
}
}
[출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음]