알고리즘/프로그래머스 [프로그래머스] 완주하지 못한 선수 최성훈 2019. 11. 9. 20:59 반응형 문제 보기 풀이풀이 이 문제는 해쉬 문제이다. (매우 간단했다..) 문제를 푼 로직은 다음과 같다. 마라톤에 참가한 선수들에 대해서 dictionary를 생성하고, 이름의 개수를 센다. (4~10번째 줄) 마라톤을 완료한 각 선수들의 이름에 대해 갯수를 깎는다. (12~14번째 줄) 문제의 조건에서 마라톤을 완주하지 못한 선수는 1명이라고 명시되어있으므로, 1개 남은 이름을 찾는다. (16~19번째 줄) 난 이렇게 풀었지만 다른 사람의 풀이를 보니 collections 모듈의 Counter 함수를 사용한 것을 보았다. (정말 간단하다...) Counter 함수는 dictionary를 반환한다. 또한, dictionary 타입끼리는 덧셈, 뺄셈, 교집합과 합집합 연산이 가능하다는 것을 알았다. 풀이 코드코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 def solution(participant, completion): answer = '' # for all players, count every different name participant_dict = dict() for player in participant: if player not in participant_dict: participant_dict[player] = 1 else: participant_dict[player] += 1 # count who completed the marathon for player in completion: participant_dict[player] -= 1 # find who didn't complete the marathon yet for player in participant_dict: if participant_dict[player] == 1: answer = player return answer Colored by Color Scripter cs 코드 다른 사람의 코드다른 사람의 코드 1 2 3 4 5 6 import collections def solution(participant, completion): answer = collections.Counter(participant) - collections.Counter(completion) return list(answer.keys())[0] Colored by Color Scripter cs 다른 사람의 코드 반응형 저작자표시 (새창열림)