띠리링구 2022. 4. 6. 16:50

문제 내용은 인터넷에 '이코테 볼링공 고르기' 검색해서 참고

 

크기가 m1인 볼링공과 크기가 m2인 볼링공을 고르는 경우의 수는

m1의 개수 * m2의 개수다

from collections import Counter

N,M = map(int,input().split())
balls = list(map(int,input().split()))

counter = Counter(balls)

keys = list(counter.keys())
values = list(counter.values())
answer = 0
for i in range(len(keys)):
    for j in range(i+1,len(keys)):
        answer += values[i] * values[j]
print(answer)

 

정답지에서는 좀 더 효율적으로 풀었다

N,M = map(int,input().split())
balls = list(map(int,input().split()))

counter = [0] * 11
for weight in balls:
    counter[weight] += 1

answer = 0
for i in range(1, M+1):
    N -= counter[i]
    answer += counter[i] * N
print(answer)

 

저자가 정말 똑똑하다는 생각이 든다.