Skip to content

[백준] 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=' ')

Reference