봄수의 연구실

CodingTest 감 살리기 with Programmers - 3일차 본문

알고리즘 풀이

CodingTest 감 살리기 with Programmers - 3일차

berom 2023. 3. 3. 21:46

CodingTest 감 살리기 with Programmers

위장

from collections import defaultdict
def solution(clothes):
    answer = 1
    dic = defaultdict(list)
    for cl in clothes:
        dic[cl[1]].append(cl[0])
    for d in dic:
        answer*=len(dic[d])+1
    return answer-1

딕셔너리에 값을 종류 별로 입력한 후에 못든 경우의 수 -1을 하였다.
특정 옷 종류+1개의 경우의 수 - 옷을 전혀 입지 않은 수가 원하는 값이기 때문이다.

베스트 앨범

from collections import defaultdict

def solution(genres, plays):
    answer = []
    dic1 =defaultdict(list)
    dic2 =defaultdict(int)

    for i,p in enumerate(zip(genres,plays)):
        dic1[p[0]].append((i,p))
        dic2[p[0]] +=p[1]
    for k,v in sorted(dic2.items(),key= lambda x : x[1],reverse=True):
        for (i,p) in sorted(dic1[k],key=lambda x:x[1],reverse=True)[:2]:
            answer.append(i)
    return answer
  • 가장 많이 플레이한 장르, 재생 횟수가 같은 노래 중, 고유 번호가 낮은 노래를 4개 출력하면 된다.
  • 로직은 간단한데, 문제를 제대로 읽지 않아 푸는데 오래 걸렸다
    • 1~2개씩 틀리는게 뭔가 했는데 예외처리를, 제대로 하지 않았다

레퍼런스

728x90