알고리즘, 자료구조

완주하지 못한 선수

hs-archive 2022. 7. 4. 20:28

수많은 마라톤 선수들이 마라톤에 참여했습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주했습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant 완주한 선수들의 이름이 담긴 배열 completion 주어질 ,

완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

 

제한사항
입출력 예

list를 사용해 풀 수도 있겠지만 list의 경우 검색의 시간 복잡도가 O(n)인데 반해 dict는 O(1)이다. 따라서 list보다 dictionary를 사용하여 문제를 푸는 것이 더 짧다는 생각을 갖고 문제를 풀어보자.

 

dictionary를 사용하여 푸는 방법은 다음과 같다.

 

for문으로 participant을 하나 씩 방문한다.

    hash() 함수를 사용해 참가자 이름을 고유한 숫자로 만들고 그것을 key값으로 갖고 이름을 value로 갖도록 dictionary에 추가한다.

    key를 hash_sum에 합한다.

 

for문으로 completion을 하나 씩 방문한다.

    hash() 함수를 사용해 완주자 이름을 고유한 숫자로 만들고 hash_sum 변수에서 해당 숫자를 뺀다.

 

hash_sum 변수를 key로 dictionary를 조회한다.

 

 

파이썬으로 작성

def solution(participant, completion):
    hash_sum = 0
    hash_dict = {}
    
    for p in participant:
        hash_dict[hash(p)] = p
        hash_sum += hash(p)

    for c in completion:
        hash_sum -= hash(c)
        
    return hash_dict[hash_sum]

 

 

 

 

 


https://coding-grandpa.tistory.com/85

 

[프로그래머스] 완주하지 못한 선수 문제 풀이(해시 Lv. 1) - 파이썬 Python

0. 동일 유형 문제 [프로그래머스] 완주하지 못한 선수 (해시 Lv. 1) [프로그래머스] 전화번호 목록 (해시 Lv. 2) [프로그래머스] 위장 (해시 Lv. 2) [프로그래머스] 베스트 앨범 (해시 Lv. 3) Youtube 영

coding-grandpa.tistory.com

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

 

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

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

programmers.co.kr

'알고리즘, 자료구조' 카테고리의 다른 글

시간복잡도 표현 ( 점근 표기법 )  (0) 2022.07.15
해시  (0) 2022.07.06
ArrayList,LinkedList 비교  (0) 2022.07.01
기능 개발  (0) 2022.07.01
124 나라의 숫자  (0) 2022.06.25