Patrick's Devlog

[BOJ/C++] 덩치(7568번) 본문

Study/Algorithms Practice

[BOJ/C++] 덩치(7568번)

Patrick_ 2022. 10. 13. 11:17

1. 개요

https://www.acmicpc.net/problem/7568

 

7568번: 덩치

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

www.acmicpc.net

1-1. 설명

우리는 사람의 덩치를 키와 몸무게로 등수를 매겨보려 한다. 한사람이 다른 사람의 키, 몸무게보다 더 크면 그 한사람의 덩치는 다른 사람보다 크다라고 표현한다. N명의 집단에서 각 사람 덩치 등수는 자신보다 더 큰덩치의 사람의 수로 정해진다. 만일 자신보다 더 큰덩치 사람이 k명이라면 그 사람의 덩치 등수는 k+1이된다. 우리는 각 사람들의 키와 몸무게를 입력받고 그에 따른 등수를 출력하는 프로그램을 작성한다.

1-2. 제한 사항

 - 첫 줄에는 전체 사람의 수 N이 주어지며, N은 2 이상 50 이하

 - N개의 줄에는 각 사람의 몸무게와 키를 나타내는 x, y 정수가 주어지며, 이 두개 정수는 10 이상 200 이하 


2. 구현

2-1. 풀이

구조체로 각 정보를 저장하고 반복문을 통해 키와 몸무게가 상대방보다 작다면 rank에 +1을 해주었다. 

2-2. 코드

#include <iostream>
using namespace std;

struct Info {
    int weight;
    int height;
    int rank;
};

Info arrays[51];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int N;
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> arrays[i].weight >> arrays[i].height;
        arrays[i].rank = 1;
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            if (j == i) continue;
            if ((arrays[j].weight > arrays[i].weight) && (arrays[j].height > arrays[i].height)) {
                arrays[i].rank += 1;
            }
        }
    }

    for (int i = 0; i < N; i++) {
        cout << arrays[i].rank << ' ';
    }

    return 0;
}