1. 풀이
풀이는 다음과 같이 Brute Force로 풀었다. 다른 사람들 풀이도 비슷하게 Brute Force로 풀었기에 다른 풀이는 따로 포스팅하지 않았다.
# friends: 친구들의 이름을 담은 1차원 문자열 배열
# gifts: 이번 달까지 주고받은 선물 기록을 담은 1차원 문자열 배열
def solution(friends, gifts):
'''
friends_dict: gifts_count_list에 활용하기 위해 각 이름을 key로, 인덱스를 value로 가지는 dictionary
gifts_index: 선물 지수를 담는 1차원 리스트
gifts_result: 다음 달 받을 선물의 개수를 담는 1차원 리스트
gifts_count_list: 선물을 준 사람은 행, 선물을 받은 사람은 열에 해당하는 2차원 리스트.
'''
n = len(friends)
friends_dict = dict()
gifts_index = [0 for _ in range(n)]
gifts_result = [0 for _ in range(n)]
gifts_count_list = [[0 for _ in range(n)] for _ in range(n)]
for index, friend in enumerate(friends):
friends_dict[friend] = index
for gift in gifts:
sender, receiver = gift.split(' ')
sender_index = friends_dict[sender]
receiver_index = friends_dict[receiver]
gifts_count_list[sender_index][receiver_index] += 1
for i in range(n):
send_count = sum(gifts_count_list[i])
receive_count = 0
for j in range(n):
receive_count += gifts_count_list[j][i]
print(send_count, receive_count)
gifts_index[i] = send_count-receive_count
for i in range(n):
for j in range(i+1, n):
if gifts_count_list[i][j] > gifts_count_list[j][i]:
gifts_result[i] += 1
elif gifts_count_list[i][j] < gifts_count_list[j][i]:
gifts_result[j] += 1
else:
if gifts_index[i] > gifts_index[j]:
gifts_result[i] += 1
elif gifts_index[i] < gifts_index[j]:
gifts_result[j] += 1
return max(gifts_result)
'Algorithm > Brute Force' 카테고리의 다른 글
[백준] 2915: 로마 숫자 재배치 (python 파이썬) (0) | 2023.03.11 |
---|