완주하지 못한 선수 - Python

Code

시간초과

1차

def solution(participant, completion):
    answer = ''
    for p in participant:
        if p in completion:
            completion.pop(completion.index(p))
        else:
            answer += p
    return answer

2차

def solution(participant, completion):
    answer = ''
    participant.sort()
    completion.sort()
    for i in range(len(completion)):
        if completion[i] != participant[0]:
            answer += participant[0]
            break
        else:
            participant.pop(0)
    if not answer and len(participant) > 0:
        answer += participant[0]
    return answer

3차

def solution(participant, completion):
    p = set(participant)
    c = set(completion)
    if p == c:      # 중복이 문제일 경우
        for part in p:
            if participant.count(part) != completion.count(part):
                answer = part
                break
    else:           # 완주 명단에 없는 경우
        answer = list(p-c)[0]
    return answer

실패

def solution(participant, completion):
    participant.sort()
    completion.sort()
    completion.append(0)
    for p, c in zip(participant, completion):
        if p != c:
            return p

애로사항

계속 어떻게 풀면 될 것 같은데 안풀려서 꼬여갔다.
결국 구글링을 해서 힌트를 얻고야 말았다...

2차 접근 방식으로 계속 밀고 나갔다면 혼자서도 풀 수 있었을 듯 하다.
보통 문자열 관련 문제 풀 때는 sorting을 해주는 것이 가장 효율적이어서
이것도 그렇게 해야지 했었는데 안풀리니까 길을 틀어버렸다. ㅠㅠ

좋은 웹페이지 즐겨찾기