백준의 덩치(7568) 문제이다.
[ 문제 바로가기 ]
[ 문제풀이 ]
1) 이 문제는 주어진 사람들의 몸무게와 키를 비교해서 두 개의 값이 더 큰 사람이 덩치가 더 크다고 판단 후, 덩치에 대한 순위를
매겨야 하는 문제이다.
본인은 비교를 위해서 각 사람의 몸무게와 키, 그리고 순위 총 3개의 변수를 관리해주는 vector를 생성 후, 값을 저장해 주었으며
순위의 초기값은 모두 1로 설정해주었다.
이 후, 2중 for문을 통해서, 모든 사람의 몸무게와 키를 비교해주는데, 자신보다 덩치가 더 큰 사람이 나오면 그 사람의 순위를
++시켜주었다. 왜냐하면 순위가 ++된다는 것은 순위가 밀려난다는 의미이기 때문이다.
어렵지 않은 문제였다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include<iostream> #include<vector> #define endl "\n" #define MAX 50 using namespace std; int N; vector<pair<pair<int, int>, int>> V[MAX]; void Input() { cin >> N; for (int i = 0; i < N; i++) { int a, b; cin >> a >> b; V[i].push_back(make_pair(make_pair(a, b), 1)); } } void Solution() { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j) continue; if (V[i].front().first.first < V[j].front().first.first && V[i].front().first.second < V[j].front().first.second) { V[i].front().second++; } } } for (int i = 0; i < N; i++) { cout << V[i].front().second << " "; } } void Solve() { Input(); Solution(); } int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("Input.txt", "r", stdin); Solve(); return 0; } | cs |
'[ BOJ Code ] > # BOJ -' 카테고리의 다른 글
[ 백준 1647 ] 도시 분할 계획 (C++) (0) | 2019.03.04 |
---|---|
[ 백준 1922 ] 네트워크 연결 (C++) (0) | 2019.03.03 |
[ 백준 1904 ] 01타일 (C++) (0) | 2019.02.19 |
[ 백준 1182 ] 부분 집합의 합 (C++) (0) | 2019.02.19 |
[ 백준 3108 ] 로고 (C++) (2) | 2019.02.19 |