덩치
포스트
취소

덩치

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

문제

사람의 덩치는 키와 몸무게, 이 두 개의 값으로 표현됩니다. 두 사람 A와 B의 덩치가 각각 (x, y), (p, q)라고 할 때, x > p 그리고 y > q 이라면 A의 덩치는 B보다 크다고 볼 수 있습니다. 그러나 키와 몸무게 중 하나만 다른 사람보다 큰 경우에는 누가 더 큰지 정할 수 없습니다.

N명의 사람들 중에서 각 사람보다 큰 덩치의 사람이 k명이라면, 그 사람의 덩치 등수는 k+1이 됩니다. 이 규칙에 따라 덩치 등수를 결정하면, 동일한 덩치 등수를 가진 사람이 여러 명일 수 있습니다.

이름(몸무게, 키)덩치 등수
A(55, 185)2
B(58, 183)2
C(88, 186)1
D(60, 175)2
E(46, 155)5

예를 들어 위의 표에서 C는 1등이고, A, B, D는 모두 2등입니다.

입력

  • 첫 줄에는 전체 사람의 수 N이 주어집니다.
  • 이후 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 주어집니다.

출력

  • 입력에 나열된 순서대로 사람들의 덩치 등수를 공백으로 구분하여 출력합니다.

제한

  • 2 ≤ N ≤ 50
  • 10 ≤ x, y ≤ 200

예제

입력

1
2
3
4
5
6
5
55 185
58 183
88 186
60 175
46 155

출력

1
2 2 1 2 5

풀이

문제의 핵심은 모든 사람들의 덩치를 두 번 비교하여 각 사람의 덩치 등수를 계산하는 것입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
N = int(input())
people = []

for _ in range(N):
    x, y = map(int, input().split())
    people.append((x, y))

for i in range(N):
    rank = 1
    for j in range(N):
        # i번째 사람이 j번째 사람보다 덩치가 작은 경우 등수를 증가시킵니다.
        if people[i][0] < people[j][0] and people[i][1] < people[j][1]:
            rank += 1
    print(rank, end=' ')
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.