본문 바로가기
코딩 테스트

[Python] 코딩테스트 고득점Kit | 해시1- 완주하지 못한 선수

by 카프리썬_ 2021. 5. 15.
728x90

아래의 문제는 프로그래머스 SQL코득점 Kit 내용이며 코드는 직접 푼 내용입니다.

해시 자료구조 정리

2021.05.15 - [Python] 해쉬(Hash Table)

 

[Python] 해쉬(Hash Table)

간단용어 해쉬 : 임의 값을 고정길이로 변환하는 것 해쉬함수 : 특정연산을 이용하여 키 값을 받아서 value를 가진 공간의 주소로 바꾸어주는 함수 해쉬테이블 : 해쉬구조를 사용하는 데이터구조

pearlluck.tistory.com

 


완주하지 못한 선수

단 한명의 선수를 제외하고 모든 선수가 마라톤을 완주했다.

마라톤에 참여한 순서들의 이름이 담긴 배열 Participant,

완주한 선수들의 이름이 담긴 배열 Completeion이 주어질때, 

완주하지 못한 선수의 이름 return

 

제한사항

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.

입출력


풀이과정

참여한사람과 완주한 사람을 비교하기 위한 해시테이블(dict) -> key: 이름 ,value : 몇명있는지

참여한사람들을 dict에 넣고, 

완주한사람들은 참여한사람들이 들어가있는 dict에 있으면 뺌. 

그리고 dict에 남아있는 key가 완주하지 못한 사람이름 

 

결과

def solution(participant, completion):
    answer = ''
    dict={}
    for i in participant:
        dict[i]=dict.get(i,0)+1
    for i in completion:
        dict[i]=dict.get(i,0)-1
    
    for key,value in dict.items():
        if value !=0:
            answer = ''.join(key)
    return answer

 

배운점

  • dict구조사용 : 주로 key에 변수를 넣고, 몇번 들어왔는지 갯수를 count할 때 
  • dict[i]=dict.get(i,0)+1 : 개수를count할때 그 변수값이 있으면 1을 넣고, 없으면 0을 넣는다
  • for key,value in dict.items(): : dict안에 있는 items를 가져와서 변수로 key랑 value를 한번에 쓸 때
  • '구분자'.join(리스트) : 순서가 있는 변수를 구분자를 포함한 string으로 변환해줄 때 (공백없는 string으로 리턴)

 

참고

python 조인 : https://blockdmask.tistory.com/468

반응형