프로그래밍/알고리즘

(내멋대로)프로그래머스 - (해시)완주하지 못한 선수[python3] (90점) (해설없음)

레인보우떡 2021. 2. 12. 23:20

일단 내가 알고 있던 지식으로 요래 ~ 조래 풀어보았다.

def solution(participant, completion):
    for person in completion:
        index_num=participant.index(person)
        del participant[index_num]
    return participant[0]

정확성은 50점인데

효율성이 0점이다.

 

시간복잡도.. 알고리즘.. 자료구조..

찾아보니, 해시테이블을 써야하고, 파이썬에는 딕셔너리가 있다고 한다.

 

문제를 선택할 때도 해시라고 나와 있었는데 모르니까.. 몰랐다. 

 

 

두 번째 코드는 

def solution(participant, completion):
    person_cmpl = dict.fromkeys(completion,2)
    person_part = dict.fromkeys(participant,1)
    person_part.update(person_cmpl) #참가자는 1 완주자는 2
    
    if person_part != person_cmpl:
        for key,value in person_part.items():
            if value == 1:
                return key
    else:
        for person in completion:
            index_num=participant.index(person) 
            del participant[index_num]
        return participant[0]

정확성 50점

효율성 40점

 

 

키 값이 중복일 때를 해결하기 위해서 분기문을 작성해 처음 작성한 코드를 넣어주었다.

 

그냥 딕셔너리만 사용했지 메커니즘은 첫 번째 코드랑 똑같은 게 아닌가 싶다.

 

100점이 나올 때까지 하고 싶은데 갈 길이 멀어, 일단 대충 90점으로 만족

 

100점만 정답이다

 

 

 

 

좋은 사이트

프로그래머스:programmers.co.kr/

728x90