코딩테스트/programmers (python)

Programmers / 해시 문제 모음

seulll 2024. 3. 9. 17:20

코딩테스트 연습 - 폰켓몬 | 프로그래머스 스쿨 (programmers.co.kr)

 

코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr)

def solution(participant, completion):
    hash_dict={}
    csum=0
    
    for i in participant:
        hash_dict[hash(i)]=i
        csum+=hash(i)
        
    for i in completion:
        csum-=hash(i)
        
    return hash_dict[csum]

 

 

코딩테스트 연습 - 전화번호 목록 | 프로그래머스 스쿨 (programmers.co.kr)

def solution(phone_book):
    pdict = {}
    
    for i in phone_book:
        pdict[i] = 1
        
    for num in phone_book:
        jubdoo=''
        
        for n in num:
            jubdoo+=n
            
            if jubdoo in pdict and jubdoo != num:
                return False
    return True

 

 

코딩테스트 연습 - 의상 | 프로그래머스 스쿨 (programmers.co.kr)

def solution(clothes):
    hash_map = {}
    for clothe, type in clothes:
        hash_map[type] = hash_map.get(type, 0) + 1
    answer = 1
    for type in hash_map:
        answer *= (hash_map[type] + 1)
    return answer-1

딕셔너리를 0으로 초기화 한 후 1씩 더할 때에는 get( , 0) +1 사용

 

 

코딩테스트 연습 - 베스트앨범 | 프로그래머스 스쿨 (programmers.co.kr)

def solution(genres, plays):
    answer = []

    dic1 = {}
    dic2 = {}

    for i, (g, p) in enumerate(zip(genres, plays)):
        if g not in dic1:
            dic1[g] = [(i, p)]
        else:
            dic1[g].append((i, p))

        if g not in dic2:
            dic2[g] = p
        else:
            dic2[g] += p

    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