Algorithm/프로그래머스

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

poppy 2021. 5. 2. 15:10
반응형

programmers.co.kr/learn/courses/30/lessons/42576?language=python3

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

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

먼저 배열을 정렬한 후 for문을 돌면서 같지 않은 부분을 찾는 연산을 수행하도록 코드를 짰다.

 

다른 사람들의 코드를 살펴보니까 zip()을 사용하면 코드의 길이는 비슷하지만 좀 더 직관적으로 코드를 짤 수 있는 것 같다

def solution(participant, completion):
    participant.sort()
    completion.sort()
    
    for p,c in zip(participant, completion):
        if p != c:
            return p
    return participant[-1]

 zip()은 동일한 개수로 이뤄진 두 자료형을 순서대로 짝지어 튜플로 묶어주는 함수이다. zip()이 어떻게 사용되는지 다음 코드를 참고하면 이해가 될 것 이다. 

# 예시 1번
A = ['a','b','b','c'] 
B = ['a','b','c']
zip(A, B)  # [('a','a'), ('b','b'), ('b','c')]  # 차이 발생

# 예시 2번 - 1
A = ['a','b','c','c']   # 마지막 값 (중복된 값이 맨 뒤에)
B = ['a','b','c']
zip(A, B)  # [('a','a'), ('b','b'), ('c','c')]

# 예시 2번 -2
A = ['a','b','c']       # 마지막 값 (하나 다른 것이 맨 뒤에)
B = ['a','b]
zip(A, B)  # [('a','a'), ('b','b')]
반응형