내일배움캠프 AI/페어프로그래밍
[페어프로그래밍] 230404 최빈값 구하기
생각하는 코댕이
2023. 4. 4. 14:24
728x90
페어프로그래밍 결과 코드
# 페어프로그래밍으로 제작한 코드
def solution(array):
# 우리는 각 원소의 숫자와 갯수 즉, 세트값을 저장해야한다. → dict사용!
# 각 원소의 숫자와 갯수를 딕셔너리에 key와 value로 저장하자!
count_dict = {}
for num in array:
# dict 키 판별, 없으면 value가 1 , 있으면 value에 +1
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
# 빈도수(value) 최댓값, 즉 value값이 제일 큰 key값을 return 해줘야 한다!
max_count = max(count_dict.values())
# 최빈값(key)이 여러개일 경우를 고려해서, 반복문을 돌려 최빈값의 리스트(mode_list)를 만든다!
# 그리고 최빈값 리스트를 통해 하나인지 여러개인지 판별해야 한다!
mode_list = []
for key, count in count_dict.items():
if count == max_count:
mode_list.append(key)
# 리스트의 길이를 비교하여 최빈값의 갯수를 판별하여 최빈값 또는 -1 return!
if len(mode_list) == 1:
return mode_list[0]
else:
return -1
리팩토링 코드
# 리팩토링(삼항연산자 리스트컴프리헨션 사용)
def solution(array):
count_dict = {} # 각 원소의 숫자와 갯수를 딕셔너리에 key와 value로 저장할 빈 딕셔너리!
for num in array:
# dict 키를 판별, 없으면 value가 1 , 있으면 value에 +1
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
# 빈도수(value) 최댓값, 즉 value값이 제일 큰 key값을 return 해줘야 한다!
max_count = max(count_dict.values())
# 최빈값(key)이 여러개일 경우를 고려해서, 반복문을 돌려 최빈값의 리스트(mode_list)를 만든다!
# 그리고 최빈값 리스트를 통해 하나인지 여러개인지 판별해야 한다!
mode_list = [num for num in set(array) if count_dict[num] == max_count]
# 리스트의 길이를 비교하여 최빈값의 갯수를 판별!
# 삼항연산자로 리팩토링
return mode_list[0] if len(mode_list) == 1 else -1
시사점 or 새로이 알게된 점
# 리스트컴프리헨션
# 1) 리스트 = [ 리스트의 요소가 되었으면 하는 값 for x in list 조건문 ]
# 2) [ ]를 꼭 써야한다!
728x90