728x90
728x90
아래의 문제는 프로그래머스 SQL코득점 Kit 내용이며 코드는 직접 푼 내용입니다.
해시 자료구조 정리
2021.05.15 - [Python] 해쉬(Hash Table)
완주하지 못한 선수
단 한명의 선수를 제외하고 모든 선수가 마라톤을 완주했다.
마라톤에 참여한 순서들의 이름이 담긴 배열 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
728x90
반응형
'코딩 테스트' 카테고리의 다른 글
[Python] 코딩테스트 고득점Kit | 정렬1 - K번째수 (0) | 2021.05.25 |
---|---|
[Python] 코딩테스트 고득점Kit | 해시3- 위장 (0) | 2021.05.18 |
[Python] 코딩테스트 고득점Kit | 해시2- 전화번호 목록 (0) | 2021.05.18 |
SQL코딩테스트 모든 문제 풀이 완료 (0) | 2021.05.06 |
[Programmers] SQL코딩테스트8 | 우유와 요거트가 담긴 장바구니 (0) | 2021.05.06 |
[Programmers] SQL코딩테스트7 | 헤비유저가 소유한 장소 (0) | 2021.05.06 |