반응형
https://school.programmers.co.kr/learn/courses/30/lessons/258712?language=python3
내 코드
def solution(friends, gifts):
# {{이름:인덱스}, {이름:인덱스}}
index={}
for i in range(0, len(friends)):
index[friends[i]] = i
# 주고 받은 선물
arr = [[0 for j in range(len(gifts))] for i in range(len(gifts))]
for gift in gifts:
a, b = gift.split(' ')
arr[index[a]][index[b]] += 1
# 선물 지수
gift_index = {}
for i in range(len(friends)):
send = 0
receive = 0
for j in range(len(friends)):
send += arr[i][j]
receive += arr[j][i]
gift_index[i] = send-receive
# 가장 많이 받는 친구의 선물 개수 찾기
answer = 0
for i in range(len(friends)):
gift = 0
for j in range(len(friends)):
if arr[i][j] > arr[j][i]:
gift += 1
elif arr[i][j] == arr[j][i]:
if gift_index[i] > gift_index[j]:
gift +=1
if answer < gift:
answer = gift
return answer
코드 수정
def solution(friends, gifts):
# {{이름:인덱스}, {이름:인덱스}}
#index={}
#for i in range(0, len(friends)):
# index[friends[i]] = i
index = {v: i for i, v in enumerate(friends)}
# 주고 받은 선물
arr = [[0 for j in range(len(gifts))] for i in range(len(gifts))]
for gift in gifts:
a, b = gift.split(' ')
arr[index[a]][index[b]] += 1
# 선물 지수
#gift_index = {}
#for i in range(len(friends)):
# send = 0
# receive = 0
# for j in range(len(friends)):
# send += arr[i][j]
# receive += arr[j][i]
# gift_index[i] = send-receive
gift_index = [0]*len(friends)
for i in range(len(friends)):
gift_index = sum(arr[i]) - sum([li[i] for li in arr)
# 가장 많이 받는 친구의 선물 개수 찾기
answer = 0
for i in range(len(friends)):
gift = 0
for j in range(len(friends)):
if arr[i][j] > arr[j][i]:
gift += 1
elif arr[i][j] == arr[j][i]:
if gift_index[i] > gift_index[j]:
gift +=1
if answer < gift:
answer = gift
return answer
728x90
반응형
'개발 > Algorithm 문제 풀이' 카테고리의 다른 글
[프로그래머스] lv.1 개인정보 수집 유효기간 (0) | 2024.02.12 |
---|---|
[프로그래머스] lv2. 순위 검색 (0) | 2024.02.12 |
[프로그래머스] lv.2 과제 진행하기 (0) | 2024.01.28 |
[프로그래머스] for 문과 if문을 한번에 (0) | 2022.07.15 |
[프로그래머스] lv.2 피로도 (0) | 2022.07.10 |