카테고리 없음
프로그래머스 코테 연습2024 KAKAO WINTER INTERNSHIP가장 많이 받은 선물
DTV
2024. 6. 23. 19:20
https://school.programmers.co.kr/learn/courses/30/lessons/258712
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
친구들 이름이 있고 선물을 주고 받은 이력이 나온다.
이력을 이용해 선물지수를 작성하고
선물을 많이 한사람은 1점, 같은경우 선물지수가 높은 사람이 1점을 얻어 최대점수를 계산한다,
=["muzi", "ryan", "frodo", "neo"]
b=["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"]
solution(a,b)
def solution(friends, gifts):
answer = 0
adic = {v:i for i,v in enumerate(friends)}
num = [[ 0 for i in range(len(friends))] for i in range(len(friends))]
extra = [ 0 for i in range(len(friends))]
prize = [ 0 for i in range(len(friends))]
for sendto in gifts:
sp = sendto.split()
num[adic[sp[0]]][adic[sp[1]]] += 1
extra[adic[sp[0]]] += 1
extra[adic[sp[1]]] -= 1
for yi,yv in enumerate(num):
for xi,xv in enumerate(yv):
if(yi == xi):
continue
if num[yi][xi] > num[xi][yi]:
prize[yi] += 1
elif num[yi][xi] == num[xi][yi]:
if extra[yi] > extra[xi]:
prize[yi] += 1
answer = max(prize)
return answer
def solution(friends, gifts):
f = {v: i for i, v in enumerate(friends)}
l = len(friends)
p = [0] * l
answer = [0] * l
gr = [[0] * l for i in range(l)]
for i in gifts:
a, b = i.split()
gr[f[a]][f[b]] += 1
for i in range(l):
p[i] = sum(gr[i]) - sum([k[i] for k in gr])
for i in range(l):
for j in range(l):
if gr[i][j] > gr[j][i]:
answer[i] += 1
elif gr[i][j] == gr[j][i]:
if p[i] > p[j]:
answer[i] += 1
return max(answer)