[백준] 7568. 덩치
N명의 키와 몸무게가 주어질 때, 덩치의 순서를 구하라. 단 키와 몸무게가 모두 더 큰 경우에만 덩치의 순위가 메겨지기 때문에 같은 순위를 가진 사람이 존재할 수 있고 동순위가 존재할 경우 다음 순위는 동순위의 숫자만큼 밀리게 된다.
아래와 같이 자기 자신을 제외한 모든 사람과 비교하는 로직을 만들면 풀어낼 수 있다.
p = [[int(x) for x in input().split()] for _ in range(int(input()))]
for a in p:
r = 1
for b in p:
if p.index(a) != p.index(b):
if a[0] < b[0] and a[1] < b[1]: r += 1
print(r, end=' ')
아래와 같이 덩치를 비교하는 로직을 별도로 분리하면 컴프리헨션을 통해 간결하게 풀어낼 수 있다.
def comp(a, b):
return True if a[0] < b[0] and a[1] < b[1] else False
n = int(input())
p = [[int(x) for x in input().split()] for _ in range(n)]
for x in [(sum(comp(p[i], p[j]) for j in range(n) if i != j)) for i in range(n)]:
print(x + 1, end=' ')