반응형
Notice
Recent Posts
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

500error

[COS Pro 2급, Python] 2차 1번 : 최대한 많은 쌍의 장갑 갯수 구하기 본문

알고리즘/파이썬

[COS Pro 2급, Python] 2차 1번 : 최대한 많은 쌍의 장갑 갯수 구하기

Internal Server Error 2024. 1. 2. 20:38
반응형

문제

왼손 장갑의 제품 번호가 들어있는 배열과 오른손 장갑의 제품 번호가 들어있는 배열이 있습니다.
제품 번호는 1부터 10 사이의 자연수입니다.
제품 번호가 같은 왼손장갑과 오른손 장갑을 합쳐 장갑 한 쌍을 만들 수 있습니다.
이때, 최대한 많은 쌍의 장갑을 만들면 최대 몇 쌍을 만들 수 있는지 구하려 합니다.
이를 위해 다음과 같이 프로그램 구조를 작성했습니다. 
 
1. 왼손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
2. 오른손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
3. 각 제품 번호별로 최대한 많은 장갑 쌍을 만들면서 개수를 셉니다.
 
왼손 장갑의 제품 번호가 들어있는 배열 left_gloves와 left_gloves의 길이 left_gloves_len, 오른손 장갑의 제품 번호가 들어있는 배열 right_gloves와 right_gloves의 길이 right_gloves_len이 매개변수로 주어질 때, 최대 몇 개의 장갑 쌍을 만들 수 있는지 return 하도록 solution 함수를 작성하려 합니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다.
코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.

 

 

 

code

max_product_number = 10

def func_a(gloves):
	counter = [0 for _ in range(max_product_number + 1)]
	for x in gloves:
		counter[x] += 1
	return counter


def solution(left_gloves, right_gloves):
	left_counter = func_a(left_gloves)
	right_counter = func_a(right_gloves)
	
	total = 0
	for i in range(1, max_product_number + 1):
		total += min(left_counter[i], right_counter[i])
	return total

left_gloves = [2, 1, 2, 2, 4]
right_gloves = [1, 2, 2, 4, 4, 7]
ret = solution(left_gloves, right_gloves)

print('solution 함수의 반환 값은', ret, '입니다.')
반응형
Comments