practivceAlgorithm/다시 봐야할 문제들

[백준][Python] 18869 멀티버스 : 좌표압축

findTheValue 2022. 1. 24. 00:13

hashmap에 tuple로 조합수를 구하는 것까지는 접근했는데

set으로 압축시키는 것은 생각을 못했음.

 

이러면 결국 tuple에 각 순위값이 들어가게 되는데

동일한 요소의 경우 묶여서 사라지기때문에

순위값의 갯수가 적어져 일일히 비교할 필요가 없어짐.

 

정렬과 indexing을 같이 사용해서 크기 비교를 해야할 때 유용하게 쓸 수 있을 것으로 보임

 

import sys
input = sys.stdin.readline
from collections import defaultdict

m, n = map(int, input().split())
universe = defaultdict(int)
for _ in range(m):
    planets = list(map(int, input().split()))
    keys = sorted(list(set(planets)))
    ranks = {keys[i]: i for i in range(len(keys))}
    add = tuple([ranks[x] for x in planets])
    universe[add] += 1

ans = 0
for cnt in universe.values():
    ans += cnt * (cnt - 1) // 2
print(ans)