코딩테스트/Algorithm
[프로그래머스] [python] 완주하지 못한 선수 (zip_longest사용)
ssojxx
2019. 12. 10. 17:10

처음에는 zip()으로 시도하였다. zip의 원소 p, c가 일치하지 않으면 그 때의 x가 완주하지 못한 선수가 된다. 그런데 zip()으로 리스트를 생성하면 participant의 길이와 comcompletion의 길이가 1 차이가 나기 때문에 정확한 값이 반환되지 않는다.
ex. ["a", "b", "c], ["a", "b"] > (("a", "a"), ("b", "b"))
zip_longest를 사용하여서 participant의 길이만큼 zip이 생성되게 하였다. 굳이 0으로 채울 필요는 없지만... 보기 편하게(?) 0으로 채웠다. 만약 넣지 않으면 None으로 채워진다.
무조건 제일 처음에 p와 c의 값이 불일치할 때의 participant 값이 answer이다. 그 뒤는 순서가 다 어긋나므로 고려할 필요 없다.
ex1. ["a, "b", "c", "d"], ["a", "b", "c"]
>> (("a", "a"), ("b", "b"), ("c", "c"), ("d", 0))
>> "d" != 0
>> "d"
ex2. ["a", "b", "c"], ["b", "c", 0]
>> (("a", "b"), ("b", "c"), ("c", 0))
>> "a" != "b"
>> "a"
ex3. ["a", "b", "b", "c"], ["a", "b", "c"]
>> (("a", "a"), ("b", "b"), ("b", "c"), ("c", 0))
>> "b" != "c"
>> "c"

