코딩테스트 파이썬/파이썬 프로그래머스 1단계
가장 많이 받은 선물
세용용용용
2024. 1. 6. 16:06





코딩테스트 연습 - 가장 많이 받은 선물 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
from itertools import combinations
def solution(friends, gifts):
answer = 0
# 선물 교환 정보
gift_dt = {}
# 선물 지수
gift_score = {}
# 선물 받는 갯수
gift_re = {}
for i in friends:
gift_dt[i]=[]
gift_score[i]=0
gift_re[i]=0
#print(gift_re)
# 선물 교환 리스트 돌며
# 선물 교환정보, 선물 지수 딕셔너리 만들어준다
for i in gifts:
i=i.split(' ')
gift_dt[i[0]].append(i[1])
gift_score[i[0]]+=1
gift_score[i[1]]-=1
#print(gift_dt)
#print(gift_score)
# 선물을 교환하는 경우의 수를 combinations으로 만들어 주며
# 선물 받는 갯수 딕셔너리 만듬
for i in combinations(friends,2):
if gift_dt[i[0]].count(i[1])>gift_dt[i[1]].count(i[0]):
gift_re[i[0]]+=1
elif gift_dt[i[0]].count(i[1])<gift_dt[i[1]].count(i[0]):
gift_re[i[1]]+=1
else:
if gift_score[i[0]]>gift_score[i[1]]:
gift_re[i[0]]+=1
elif gift_score[i[0]]<gift_score[i[1]]:
gift_re[i[1]]+=1
# 최종 적으로 선물을 가장 많이 받은 개수를 리턴하기위한 answre 치환
answer = max(gift_re.values())
return answer