• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#7568 덩치

image image

문제 정리

(몸무게, 키)가 사람 수 대로 주어지는데 이를 (x, y)라 했을 때
자신보다 x, y가 모두 큰 사람이 몇명인지 구해서 출력하기.

생각해보기

우선 (x,y)는 typedef를 써서 받아보자… 백트래킹은 아니고
그냥 일일히 비교해도 될 것 같은디…

우선 본인빼고 어차피 다 비교해야 함.
a -> b c d e
b -> a c d e 이런 식으로..

코드 쓰기

나보다 덩치 큰 사람 수 = 등수가 아니고
나보다 덩치 큰 사람 수 + 1이 등수임

그리고 나랑 나 비교 건너뛸 때 break; 아니고 continue;임…

내 풀이

// BOJ-7568 덩치
#include <iostream>
#include <vector>

using namespace std;

// Person 구조체
typedef struct Person{
    int weight;
    int height;
}Person;

// 전역 변수
int num = 0;
vector<Person> v;

// 재귀 함수
void comparePerson(int idx, int num) {
    Person me = v[idx];
    int rank = 0;
    // 본인 빼고 다 비교하기
    for(int i = 0; i < num; i++){
        if(i == idx) continue;
        Person other = v[i];
        if(other.height - me.height > 0 && other.weight - me.weight > 0){
            rank += 1;
        }
    }

    // 등수 출력
    cout << rank + 1 << " ";
}

int main() {
    cin >> num;

    for(int i = 0; i < num; i++){
        int w = 0, h = 0;
        cin >> w >> h;
        Person p = { w, h };
        v.push_back(p);
    }

    for(int i = 0; i < num; i++){
        comparePerson(i, num);
    }

}

풀고 나서 알게된 것