Skip to content

Commit f95744d

Browse files
committed
[PGS] 가장 많이 받은 선물 / Level 1 / 180분 / 실패
1 parent da1d04c commit f95744d

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# PGS. 2024 KAKAO WINTER INTERNSHIP - 가장 많이 받은 선물
2+
def solution(friends, gifts):
3+
gift_map = {} # 각 친구 쌍 간 선물 기록
4+
send_count = {} # 선물 준 횟수 딕셔너리
5+
receive_count = {} # 선물 받은 횟수 딕셔너리
6+
gift_count = {} # 선물 지수 딕셔너리
7+
next_month_gift_cnt = {} # 다음 달에 받을 선물의 개수를 친구들별로 저장하는 딕셔너리
8+
9+
for friend in friends: # 초기화
10+
gift_map[friend] = {}
11+
send_count[friend] = 0
12+
receive_count[friend] = 0
13+
gift_count[friend] = 0
14+
next_month_gift_cnt[friend] = 0
15+
16+
# 선물 기록 분석(각 친구 간에 누가 몇 번 선물을 주고받았는지)
17+
for gift in gifts:
18+
sender, receiver = gift.split()
19+
if receiver not in gift_map[sender]: # 해당 친구 간의 기록이 없다면 0으로 초기화
20+
gift_map[sender][receiver] = 0
21+
if sender not in gift_map[receiver]: # 해당 친구 간의 기록이 없다면 0으로 초기화
22+
gift_map[receiver][sender] = 0
23+
gift_map[sender][receiver] += 1 # sender가 receiver에게 선물한 횟수 +1
24+
25+
send_count[sender] += 1 # sender가 준 선물 횟수 +1
26+
receive_count[receiver] += 1 # receiver가 받은 선물 횟수 +1
27+
28+
# 선물 지수 계산
29+
for friend in friends:
30+
# 선물지수: 준 선물 수 - 받은 선물 수
31+
gift_count[friend] = send_count[friend] - receive_count[friend]
32+
33+
# 모든 친구 쌍을 비교하여 다음 달에 받을 선물 수 계산
34+
for i in range(len(friends)):
35+
for j in range(i + 1, len(friends)):
36+
A = friends[i]
37+
B = friends[j]
38+
if gift_map[A].get(B, 0) > gift_map[B].get(A, 0): # A>B이면, A가 다음달에 받음
39+
next_month_gift_cnt[A] += 1
40+
elif gift_map[A].get(B, 0) < gift_map[B].get(A, 0): #A<B이면, B가 다음달에 받음
41+
next_month_gift_cnt[B] += 1
42+
else: # 두 사람이 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 받음
43+
if gift_count[A] > gift_count[B]:
44+
next_month_gift_cnt[A] += 1
45+
elif gift_count[A] < gift_count[B]:
46+
next_month_gift_cnt[B] += 1
47+
# 선물 지수도 같다면 아무도 받지 않음
48+
49+
# 가장 많이 받을 친구 반환
50+
return max(next_month_gift_cnt.values())

0 commit comments

Comments
 (0)