참가자 리스트 participant와 완주자 리스트 completion이 입력으로 주어지고 완주하지 못한 선수를 출력하는 문제이다.
참가지 리스트에 있는 선수들 중에서 완주자 리스트에는 없는 선수를 찾으면 될 것 같지만 문제를 보면 동명이인이 존재할 수 있다.
동명이인을 처리하기 위해서 dictionary를 사용했다
처음에 모든 참가자에 대한 key를 생성하고 value를 0으로 초기화 한다.
그리고 참가자와 완주자 리스트를 합한 리스트를 순회하면서 해당하는 선수의 value를 1 증가시킨다.
그리고 이 딕셔너리에 저장된 value들 중에서 홀수를 찾는다.
만약에 동명이인이 아닌 A 선수가 완주를 했다면 딕셔너리에서 A의 value는 2일 것이다.
동명이인이라고 해도 모두 완주했다면 짝수를 값으로 가질 수 밖에 없다.
즉, 딕셔너리에서 값을 홀수로 가지는 키(선수)는 participant에는 존재하지만 completion에는 존재하지 않는 완주하지 못한 선수이다.
[소스 코드]
def solution(participant, completion):
answer = ''
data = participant + completion
dic = {string: 0 for string in participant}
for player in data:
dic[player] += 1
for key, val in dic.items():
if val % 2 != 0:
answer = key
break
return answer
[프로그래머스] 해시 - 위장 (결과 포함) (0) | 2021.08.21 |
---|---|
[프로그래머스] 해시 - 전화번호 목록 (결과 포함) (0) | 2021.08.21 |
[백준] 12865번 - 평범한 배낭 (DP) - 결과 포함 (0) | 2021.04.17 |
[백준] 1912번 - 연속합 (DP) - 결과 포함 (0) | 2021.04.16 |
[백준] 9251번 - LCS (DP) - 결과 포함 (0) | 2021.04.15 |