코딩 테스트

[Python3] 프로그래머스 레벨 1 - 완주하지 못한 선수

귀건 2021. 6. 6. 02:14
728x90
반응형

처음 생각한 코드.


def solution(participant, completion):

    answer = ''
    
    #participant 마라톤 참여 선수
    #completion 마라톤 완주 선수
    #완주하지 못한 선수는 한 명.          
        
    for i in completion:
    	if i in participant:
        	participant[participant.index(i)] = ''
    
    for i in participant:
    	answer += i
   
   
   
    return answer

정확도는 다 맞았으나, 효율성 테스트에서 모두 탈락.

index 연산에서 하나씩 찾는 것이 굉장히 오래 걸릴 것이라고 생각함.

 

바로 딕셔너리를 원소의 이름 : 원소의 개수로 만듬 -> 구글링으로 찾아냄

# 최종 답안


def solution(participant, completion):

    answer = ''
    
    #participant 마라톤 참여 선수
    #completion 마라톤 완주 선수
    #완주하지 못한 선수는 한 명.          
        
    part_dic = {}
    comp_dic = {}
        
    for i in participant:
        try : part_dic[i] += 1
        except : part_dic[i] = 1
            
    for i in completion:
        try : comp_dic[i] += 1
        except : comp_dic[i] = 1
        
    for i in comp_dic:
        part_dic[i] = part_dic[i] - comp_dic[i]
    
    for i in part_dic:
        if part_dic[i] >= 1:
            answer += i
            break
        
    return answer

그리고 completion과 participant의 원소의 갯수를 키값에 따라 뺌.

완주하지 못한 선수는 한명이기 때문에 1개 이상 남아 있는 participant의 원소는 완주하지 못한 선수. 바로 break.

 

다 풀고 다른사람의 풀이를 봤는데 collections 라이브러리의 counter를 사용해서 작성함..

범접하지 못할 경이로움을 느낌.. ㄷㄷ

 

레벨 1도 어려웠다ㅠㅠ

728x90
반응형