덩치
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 라이센스를 따릅니다.