기술 블로그

완주하지 못한 선수 본문

알고리즘

완주하지 못한 선수

jaegwan 2022. 2. 16. 15:09
반응형

def solution(participant, completion):
    answer = '' # 1. 두 list를 sorting한다 
    participant.sort() 
    completion.sort() # 2. completeion list의 len만큼 participant를 찾아서 없는 사람을 찾는다 
    for i in range(len(completion)):
        if(participant[i] != completion[i]):
            return participant[i] # 3. 전부 다 돌아도 없을 경우에는 마지막 주자가 완주하지 못한 선수이다. 
    return participant[len(participant)-1]​

다른 곳에서 퍼온 코드

 

 

def solution(participant, completion):
    answer = ''
    answerNum = 0
    sp = sorted(participant) #도전자
    sc = sorted(completion) #완주자
    for i in range(len(sp)-1): # 도전자 중 마지막 빼고 탐색
        if sc[i]!=sp[i]: #다른 사람이 있다면 
            answerNum=i #다를 시 해당 인덱스를 넣음 (다름 = 해당sp[index]가 완주 못함)
        else:
            answerNum=len(sc) # 마지막 남은 1명이 탈락자 
            
    answer = sp[answerNum]
    
    return answer

태스트케이스 성공 

 

풀이 제출 실패 한 내 코드

 

다시 푼 코드:

 

 

def solution(participant, completion):
    sp = sorted(participant) #도전자
    sc = sorted(completion) #완주자
    
    answerNum=len(sc) # 틀린게 없을시 기본값으로 참가자중 가장 마지막 인덱스가 탈락했다고 정의
    
    for i in range(len(sp)-1): # 도전자 중 마지막 빼고 탐색
        if sc[i]!=sp[i]: #다른 사람이 있다면 
            answerNum=i #다를 시 해당 인덱스를 넣음 (다름 = 해당sp[index]가 완주 못함)
            # return sp[answerNum] #테케는 정답인데 이게 있고 없고 채점 정답이 갈립니다.
            #바로 리턴을 안해주면 반복문이기떄문에 틀린걸 찾아도 다음 인덱스로 넘어간다(불필요한 연산 소모)
            
            
             
        
             # 마지막 남은 1명이 탈락자 :계속 마지막 사람이 탈락자로 들어가게 됨
            
    return sp[answerNum]

 

 

for문 안에서 answerNum이 변경되지 않았고 

바로 함수 리턴을 해줬어야 했다.

#바로 리턴을 안해주면 반복문이기 때문에 틀린걸 찾아도 다음 인덱스로 넘어간다(불필요한 연산 소모)

 

 

-정렬 후 비교가 아닌 해시로 다시 푼 코드

 

def solution(participant, completion):
    hashDict = {}
    sumHash = 0
    
    for part in participant:
        hashDict[hash(part)]=part
        sumHash += hash(part)
    
    for comp in completion:
        sumHash -= hash(comp)
    
    
    return hashDict[sumHash]
반응형

'알고리즘' 카테고리의 다른 글

[JS] 알고리즘을 위한 js - 1 배열  (0) 2023.11.13
[프로그래머스] 조이스틱  (0) 2023.11.01
프로그래머스 체육복  (0) 2023.10.26
모의고사  (0) 2022.02.18
k번째 수  (0) 2022.02.17
Comments