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

nibble·2019년 11월 20일
0

프로그래머스

목록 보기
1/1

첫번째 코드

완주한 리스트 목록과 완주하지 못한 리스트 목록의 값을 인덱스로 비교하였다.
중복된 이름을 방지하기 위하여 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]
profile
안녕하세요. 개발공부를 하고있는 nibble입니다.

0개의 댓글