베스트 앨범
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 첫 번째 풀이 : fail
dn=sorted(dic.items(), key= lambda x:[sum(x[1])], reverse=True)
- lambda 식에 sum(x[1]) 만 넣으면 에러
→ 리스트 안에 넣어줘야 함
def solution(genres, plays):
dic={}
answer = []
for idx, genre in enumerate(genres):
if genre not in dic.keys():
dic[genre]=[] #여러 값 담기위해 리스트로 초기화
dic[genre].append(plays[idx])
#람다식에서 sum을 리스트 안에 넣으니까 됨
dn=sorted(dic.items(), key= lambda x:[sum(x[1])], reverse=True)
for d in dn:
d[1].sort(reverse=True)
for i in range(2):
answer.append(plays.index(d[1][i]))
return answer

- 두 번째 풀이 : 성공 !
- 📍 마지막 2중 for문에서 d[1]의 값이 2개 미만일 수 있다는 점 간과 → 런타임 에러의 원인
- → len(d[1])의 길이로 for문 돌림
- 📍재생횟수가 같은 노래의 경우 고유번호 낮은 노래 먼저 수록
- → 같은 인덱스를 2번 넣지 않도록 확인한 인덱스의 값을 0으로 변경
- 📍 마지막 2중 for문에서 d[1]의 값이 2개 미만일 수 있다는 점 간과 → 런타임 에러의 원인
def solution(genres, plays):
dic={}
answer = []
for idx, genre in enumerate(genres):
if genre not in dic.keys():
dic[genre]=[] #여러 값 담기위해 리스트로 초기화
dic[genre].append(plays[idx])
#람다식에서 sum을 리스트 안에 넣으니까 됨
dn=sorted(dic.items(), key= lambda x:[sum(x[1])], reverse=True)
for d in dn:
d[1].sort(reverse=True)
for i in range(len(d[1])):
answer.append(plays.index(d[1][i]))
plays[plays.index(d[1][i])]=0 #인덱스를 2번 세지 못하도록 변경
if i==1:
break
return answer
- 다른 사람 풀이
- key= lambda x: (x[0], -x[1])를 한 이유
- 튜플 형태일때 첫번째 요소를 기준으로 정렬하고 첫번째 요소가 같은 경우 두번째 요소를 기준으로 정렬하는 원리를 이용
- -를 붙인것은 고유번호가 낮은 것을 크다고 보는 것
- min(len(temp),2)
- 재생횟수가 2번 미만일 경우 고려하여 len(temp)와 2중 작은 값을 택하도록 함
- sum( map ( lambda y: y[0], d[x]))
- y=d[x] 로 이용해서 불러오는 것과 같이 값 안에있는 값을 다시 불러올 때 사용
- key= lambda x: (x[0], -x[1])를 한 이유
def solution(genres, plays):
answer = []
d = {e:[] for e in set(genres)}
for e in zip(genres, plays, range(len(plays))):
d[e[0]].append([e[1] , e[2]])
genreSort =sorted(list(d.keys()), key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True)
for g in genreSort:
temp = [e[1] for e in sorted(d[g],key= lambda x: (x[0], -x[1]), reverse = True)]
answer += temp[:min(len(temp),2)]
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 3] [DP] 정수 삼각형 (0) | 2023.01.18 |
|---|---|
| [프로그래머스] [Level 3] [Heap] 디스크 컨트롤러 (0) | 2022.10.23 |
| [프로그래머스] [Level 2] [2018 KAKAO BLIND RECRUITMENT 1차] 뉴스 클러스터링 (0) | 2022.09.27 |
| [프로그래머스] [Level 2] n^2 배열 자르기 (0) | 2022.09.22 |
| [프로그래머스] [Level 2] [2018 KAKAO BLIND RECRUITMENT] [캐시] 1차 캐시 (0) | 2022.09.12 |