Koala - 2기/A반

[7568번] 덩치

TODIREP 2021. 1. 12. 10:00

 

www.acmicpc.net/problem/7568

 

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

 

 

각 사람의 (몸무게, 키) 배열, 등수 배열, 등수를 세는 변수를 선언해줍니다.

int num[51]; // 등수 배열
pair<int, int> member[51]; // (몸무게, 키) 배열

pair<int, int>를 사용하면 몸무게 배열과 키 배열을 따로 선언해주지 않아도 됩니다.

변수에 접근은 첫 번째는 first, 두 번째는 second로 하면 됩니다.

pair<>가 익숙하지 않다면

typedef struct {
    int weight;
    int height;
} body;

body member[51];

이런식으로 구조체를 활용하는 것도 좋습니다.

 

이중 반복문을 사용하여 자신보다 덩치가 큰 사람이 얼마나 있는지 확인해주면 되는 문제입니다.

for (int index = 0; index < N; index++) {
    count = 1; // 등수를 1로 지정, 자신보다 큰 경우가 없을 때는 1등
    for (int index2 = 0; index2 < N; index2++) {
        if (index == index2) continue;
        // 비교 대상이 자신일 때 PASS
        if (member[index2].first > member[index].first && member[index2].second > member[index].second) {
            // 자신보다 몸무게, 키 보두 클 경우
            count++;
            // 등수를 1 추가
        }
    }
    num[index] = count;
}

모든 조건문이 종료되면 등수 배열을 모두 출력해주면 됩니다.

for (int index = 0; index < N; index++) {
    cout << num[index] << " ";
}

전체 코드

더보기
#include <iostream>
using namespace std;

int num[51];
pair<int, int> member[51];
int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N, X, Y, count;
    cin >> N;
    for (int index = 0; index < N; index++) {
        cin >> X >> Y;
        member[index] = {X, Y};
    }
    for (int index = 0; index < N; index++) {
        count = 1;
        for (int index2 = 0; index2 < N; index2++) {
            if (index == index2) continue;
            if (member[index2].first > member[index].first && member[index2].second > member[index].second) {
                count++;
            }
        }
        num[index] = count;
    }
    for (int index = 0; index < N; index++) {
        cout << num[index] << " ";
    }
    cout << "\n";
    return 0;
}