기술 블로그
완주하지 못한 선수 본문
반응형
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