Algorithm/Greedy

[이코테] 볼링공 고르기

킹우현 2023. 2. 2. 23:18

 

1. 본인 코드

n, m = map(int,input().split())
weight = list(map(int,input().split()))

weight.sort()

count = 0

# 리스트 집합화(원소의 값만 추출하기 위함)
weight_set = set(weight) 
weight_value = list(weight_set)

for i in weight_value:
    tempList = [j for j in weight if j > i] # 현재 i 값보다 큰 무게를 가진 공들만 추출(리스트 컴프리헨션 사용)
    count += (weight.count(i) * len(tempList)) # (현재 i 개수) * (무게가 더 큰 공 개수) = 조합의 개수

print(count)

# 소요시간 : 0.00011277198791503906

2. 교재 답안

n, m = map(int, input().split())
data = list(map(int, input().split()))

# 1부터 10까지의 무게를 담을 수 있는 리스트
array = [0] * 11
for x in data:
	# 각 무게에 해당하는 볼링공의 개수 카운트
    array[x] += 1
result = 0
# 1부터 m까지의 각 무게에 대하여 처리
for i in range(1, m+1):
    n -= array[i] # 무게가 i인 볼링공의 개수(A가 선택할 수 있는 개수) 제외
    result += array[i] * n # B가 선택하는 경우의 수와 곱하기

print(result)

#소요 시간 : 6.389617919921875e-05

'Algorithm > Greedy' 카테고리의 다른 글

[백준 11399번] ATM  (0) 2023.02.06
[백준 2839번] 설탕 배달  (0) 2023.02.06
[이코테] 무지의 먹방 라이브  (0) 2023.02.05
[이코테] 만들 수 없는 금액  (0) 2023.02.02
[이코테] 큰 수의 법칙  (0) 2023.01.29