
A, B 두 사람이 볼링을 치고 있습니다.
두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다.
볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고,
공의 번호는 1번부터 순서대로 부여됩니다.
또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다.
볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다.
두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요.
5 3
1 3 2 3 2
8
8 5
1 5 4 3 2 4 5 2
25
# Input
n, m = map(int, input().split())
data = list(map(int, input().split()))
print(n, m, data)
# Try
def func(n, m, data):
result = 0
for i in range(n):
for j in range(i + 1, n):
if data[i] != data[j]:
result += 1
return result
print(func(n,m,data))
5 3
1 3 2 3 2
5 3 [1, 3, 2, 3, 2]
8
# Input 2
n, m = 8, 5
data = [1, 5, 4, 3, 2, 4, 5, 2]
print(func(n,m,data)) # 예상 출력 값: 25
25
그냥 머리에서 떠오르는데로 빠르게 풀었는데
더 나은 복잡도로 문제를 풀수 있는지 고민해 보고 답을 작성해야 했다.
O(N2)이 아닌 O(N)으로 풀 수 있도록 다음에 다시 풀어보자.