[Programmers] 완주하지 못한 선수 (해시 Lv. 1) - Python

꼬마요리사레미·2023년 5월 25일

Algorithm

목록 보기
4/41

1. 문제

완주하지 못한 선수

2. 풀이


코드
def solution(participant, completion):
    participant.sort()
    completion.sort()
    for p, c in zip(participant, completion):
        if p != c:
            return p
    return participant[-1]
입력 및 출력
participant = ["leo", "kiki", "eden"]
completion = ["eden", "kiki"]

>> "leo"

3. 해설


  1. 'participant.sort():' participant 리스트를 알파벳순으로 정렬한다.

    • 정렬 후 : participant = ["eden", "kiki", "leo"]
  2. 'completion.sort():' completion 리스트를 알파벳순으로 정렬한다.

    • 정렬 후: completion = ["eden", "kiki"]
  3. 'for p, c in zip(participant, completion)': participantcompletion 리스트를 동시에 반복문으로 순회한다. 현재 위치의 참가자와 완료된 참가자를 변수 pc에 할당한다.

    1. 첫 번째 반복문: p = "eden", c = "eden". p와 c가 같으므로 조건문은 건너뛴다.
    2. 두 번째 반복문: p = "kiki", c = "kiki". p와 c가 같으므로 조건문은 건너뛴다.
  4. return participant[-1]: 반복문 속 조건문이 실행되지 않았으므로, participant 리스트의 마지막 참가자인 leo가 완주하지 못했다는 것을 의미한다.

    • 결과값 : "leo"

4. 사용된 함수


zip()

zip() 함수는 여러 개의 iterable(반복 가능한 객체)를 인자로 받아서, 각 iterable에서 같은 위치에 있는 요소들을 튜플로 묶어주는 이터레이터(iterator)를 반환해준다.

zip() 함수는 이터레이터를 반환하기 때문에, 이터레이터를 직접 사용하면 출력값은 튜플로 구성된 이터레이터가 된다. 이터레이터는 list() 함수를 사용하여 리스트로 변환하거나, for 반복문에서 직접 접근하여 값을 사용할 수 있다.

코드
participant = ["leo", "kiki", "eden"]
completion = ["eden", "kiki"]

zipped = zip(participant, completion)
zipped_list = list(zipped)

# 이터레이터를 직접 사용하여 출력
print(zipped)  
# 출력: <zip object at 0x7f2c1f659fc0>

# list() 함수를 사용하여 출력
print(zipped_list)
# 출력: [("leo", "eden"), ("kiki", "kiki")]

# for 반복문에서 직접 접근하여 출력
for item in zipped:
    print(item)
# 출력: ("leo", "eden") ("kiki", "kiki")

0개의 댓글