[해시] 모음_코딩테스트 고득점 Kit

EunBi Na·2023년 2월 11일
0

폰켓몬

링크텍스트

def solution(nums):
    choose = int(len(nums) / 2) # 주어지는 리스트는 항상 짝수
    nums = set(nums) # set으로 중복 제거
    
    answer = min(len(nums), choose)
    
    return answer

완주하지 못한 선수

링크텍스트

def solution(participant, completion):
    d = {}
    for x in participant:
    	d[x] = d.get(x, 0) + 1
    for x in completion:
    	d[x] -= 1
    dnf = [k for k, v in d.items() if v > 0]
    answer = dnf[0]
    return answer
def solution(participant, completion):
answer = '' 

# 1. 두 list를 sorting한다 
participant.sort()
completion.sort() 

# 2. completeion list의 len만큼 participant를 찾아서 없는 사람을 찾는다 
for i in range(len(completion)):
if(participant[i] != completion[i]): return participant[i] 

# 3. 전부 다 돌아도 없을 경우에는 마지막 주자가 완주하지 못한 선수이다.
return participant[len(participant)-1]

전화번호 목록

링크텍스트

def solution(phone_book):
    answer = True
    hash_map = {}
    
    # 등장한 숫자들을 count 딕셔너리로 만듦
    for phone_number in phone_book:
        hash_map[phone_number] = 1
        
    # 다시 숫자들을 꺼낸뒤
    for phone_number in phone_book:
        temp = ""
        for number in phone_number: #숫자 하나씩 뜯어보기
            temp += number
            #딕셔너리 키로 같은게 있지만! 전체 숫자는 다른 경우!
            if temp in hash_map and temp != phone_number:
                answer = False
                
    print(hash_map)
    return answer
def solution(phone_book):
    answer = True
    hash_map = {}

    for phone_number in phone_book:
        temp = ""
        for number in phone_number:  # 숫자 하나씩 뜯어보기
            temp += number

            if temp in phone_book and temp != phone_number: # 딕셔너리 리스트로 바꿈
                answer = False

    return answer

위장

링크텍스트

def solution(clothes):
    answer = 1
    dic = {} #dictionary 사용
    
    for i in range(len(clothes)):
        kind = clothes[i][1]
        if kind in dic:
            dic[kind] += 1
        else:
            dic[kind] = 1
            
    for k in dic.keys():
        print(k)
        answer *= (dic[k]+1)
    answer -= 1
    return answer

베스트앨범

링크텍스트

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
profile
This is a velog that freely records the process I learn.

0개의 댓글