Algorithm (PS)

[프로그래머스] 해시 - 완주하지 못한 선수 , dictionary in Python 정리

minjiwoo 2022. 2. 6. 16:04
728x90

https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

오랜만에 해시 유형을 풀어보았다 !!

오랜만이라서 딕셔너리 쓰는 방법을 까먹었다,,,

i ) key 로 value 가져오기 : get() 

Python 에서 key를 이용하여 딕셔너리의 value를 가져오려면 get() 함수를 사용하면 된다. 

그런데 아주 편리한 점은, get(key값, default값) 현재 key 가 딕셔너리에 없으면 default 값으로 저장 후, default 값을 value로 반환한다. 

ii ) python 에서 딕셔너리의 요소 삭제

del dict[key이름]

다음과 같이 삭제해 주면 된다. 

iii) key 값들만 모아서 반환해주는 keys() 함수 

또한 keys() 매소드는 현재 dictionary 에 있는 key들만 묶어서 객체로 반환해주는 아주 편리한 함수이다 

dict_keys 타입으로 반환한다. 

dic = {'apple':1, 'banana':3}

dict_keys(['apple', 'banana']) # 반환값

 

 

문제의 풀이는 다음과 같다 ~!

def solution(participant, completion):
    answer = ""
    p_dict = dict()
    for p in participant:
        p_dict[p] = p_dict.get(p, 0) + 1
    
    for c in completion:
        p_dict[c] -= 1
        if p_dict[c] == 0:
            del p_dict[c]
    answer = list(p_dict.keys()).pop()
    return answer

 

 

 

 

728x90