완주한 리스트 목록과 완주하지 못한 리스트 목록의 값을 인덱스로 비교하였다.
중복된 이름을 방지하기 위하여 pop으로 완주하지 못한 리스트를 제거하였다.
테스트케이스는 모두 통과하였지만 효율성은 거지같았다. 효율성 통과0
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)): # 2
for j in range(len(participant)): # 3
if completion[i] == participant[j]:
participant.pop(j)
break
return ",".join(map(str, participant))
나는 알고리즘 공부를 시작한지 얼마 안되서 일단 테스트 케이스만이라도 통과하는게 목적이었다. 해시에 대해서 좀 찾아보고 효율성을 생각하면서 짠 코드
완주하지 못한 사람의 문자열을 검색하여 완주자 목록에 존재하지 않으면 출력하는 코드
하지만 중복값을 깜빡하여ㅋㅋ 테스트케이스 하나 틀림
def solution(participant, completion):
answer = ''
participant.sort()
completion.sort()
for i in range(len(participant)):
if participant[i] in completion:
continue
else:
return participant[i]
중복을 생각하여 완주자 목록에 존재하면 값을 지워버리게 했다.
remove 함수는 중복 값이어도 하나만 지우기 때문에 사용할 수 있었다.
근데 아직 효율성 3개가 틀리는데 뭐가 부족할까
[x] sort() 함수를 지워보기: 오히려 효율성이 더 떨어졌다.
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(participant)):
if participant[i] in completion:
completion.remove(participant[i])
else:
return participant[i]