혜온의 이것저것

[코딩테스트 고득점 kit] 해시 - 완주하지 못한 선수 (Python) 본문

Algorithm/Programmers

[코딩테스트 고득점 kit] 해시 - 완주하지 못한 선수 (Python)

혜온 :) 2023. 4. 4. 14:04
문제 이해 및 풀이

맨 처음에는 set을 이용해서 빼기를 하면 된다고 생각했다

하지만 동명이인이 있는 경우에는 두 이름을 하나로 합쳐버리기 때문에 원하는 결과를 얻을 수 없었다.

다르게 생각한 방법은 두 명단을 정렬한 후 같은 위치에 다른 이름이 있는 경우 participant의 이름을 return해주었다.

그리고 다른 경우를 발견하지 못한 경우에는 participant의 마지막 이름이 완주하지 못한 경우이므로 마지막 이름을 return하였다.

 

최종 코드
def solution(participant,completion):
    participant.sort()
    completion.sort()
    for i in range(len(completion)):
        if participant[i]!=completion[i]:
            return participant[i]
    return participant[-1]

 

다른 사람의 코드

다른 사람이 작업한 코드를 살펴봤는데 Counter를 사용한 경우가 있었다.

import collections
def solution(participant,completion):
    answer=collections.Counter(participant)-collections.Counter(completion)
    return list(answer.keys())[0]

 

문제 출처

프로그래머스 코딩테스트 고득점 kit

https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Comments