이코테 기출 문제 5.볼링공 고르기

MongCheol·2022년 6월 28일
post-thumbnail

볼링공 고르기

A, B 두 사람이 볼링을 치고 있습니다.
두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다.
볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고,
공의 번호는 1번부터 순서대로 부여됩니다.
또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다.
볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다.
두 사람이 볼링공을 고르는 경우의 수를 구하는 프로그램을 작성하세요.


입력 조건

  • 첫째 줄에 볼링공의 개수 N, 공의 최대 무게 M이 공백으로 구분되어 각각 자연수 형태로 주어집니다.
    ( 1 <= N <= 1,000, 1, <= M <= 10)
  • 둘째 줄에 각 볼링공의 무게 K가 공백으로 구분되어 순서대로 자연수 형태로 주어집니다.
    (1 <= K <= M)

출력 조건

  • 첫째 줄에 두 사람이 볼링공을 고르는 경우의 수를 출력합니다.

입력 예시 1

5 3
1 3 2 3 2


출력 예시 1

8


입력 예시 2

8 5
1 5 4 3 2 4 5 2


출력 예시 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

1회차 풀이 후기

그냥 머리에서 떠오르는데로 빠르게 풀었는데
더 나은 복잡도로 문제를 풀수 있는지 고민해 보고 답을 작성해야 했다.
O(N2)이 아닌 O(N)으로 풀 수 있도록 다음에 다시 풀어보자.

profile
자그마한 개미

0개의 댓글