Priceless

[백준] 7568번: 덩치 (C++) 본문

Algorithm & Test/백준

[백준] 7568번: 덩치 (C++)

Hyun__ 2023. 8. 29. 21:13

키와 몸무게를 입력 받아 누가 제일 덩치가 큰 지 알아내는 문제다

나보다 키와 몸무게가 큰 사람이 없으면 그 사람이 제일 덩치가 큰 사람이고

비교하는 사람보다 키는 크지만 몸무게가 작거나 그 반대인 경우 비교하는 사람과 같은 순위이다

 

몸무게와 키를 저장하는 각 배열에 입력 받고

순위를 담당하는 배열을  추가한다

본인이 키와 몸무게 둘 다 한 번이라도 밀린다면 점수를 올린다(올릴 수록 순위가 낮아짐)

그런 식으로 전수 조사를 하면 구할 수 있는 간단한 문제다

 

처음에는 순위를 담당하는 배열을 배열 크기만큼 초기화하여

조사하는 사람의 키와 몸무게가 둘 중 하나라도 크면 

점수를 빼는 식으로 구현했다

제공되는 예제에서는 잘 작동됐지만 다른 예제에서 잘 작동하지 않아

1점에서 시작하여 패널티를 주는 식으로 하니까 쉽게 해결할 수 있었다

// baekjoon 7568

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>


using namespace std;

// codes for fast I/O
void init(){
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(false);
}


int main(){
    init();
    
    int n;
    cin >> n;
    
    int arr_h[n];
    int arr_w[n];
    int h, w;
    int point[n];
    for(int i = 0; i < n; i++){
        cin >> h >> w;
        arr_h[i] = h;
        arr_w[i] = w;
        point[i] = 1;
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(i != j){
                if((arr_h[i] < arr_h[j] && arr_w[i] < arr_w[j])){
                    point[i]++;
                }
            }
        }
    }
    for(int i = 0; i < n; i++){
        cout << point[i] << ' ';
    }
}