코딩 테스트 연습문제
- programmers.co.kr
- 완주하지 못한 선수를 출력하시오. 문제
# 참가자, 완주자 리스트를 제공한다
# 완주하지 못한 사람을 출력하자.
# 동명이인이 있을 수 도 있다.
def solution(participant, completion):
if 1 > len(participant) or len(participant) > 100000:
return ""
if len(participant) < len(completion):
return ""
answer = []
for x in set(participant):
# 동명이인 모두가 완주했는가?
if participant.count(x) >=2 and participant.count(x) != completion.count(x):
answer += [x *(participant.count(x) - completion.count(x))]
# 참가자가 완주를 했는가?
if participant.count(x) == 1 and participant.count(x) != completion.count(x):
answer += [x]
return "".join(answer)
#print (solution( ["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]))
풀이결과로
정확성에서는 문제가없는데
효율성(시간)에서 초과난다.
문제를 해결해보자,,
검색해보니까 collection 모듈을 사용하여 푸는 풀이가 대박이다.
- collection 함수에 대한 자세내용은
- https://excelsior-cjh.tistory.com/94
import collections
answer = collections.counter(participation) - collections.counter(completion)
return list(answer)[0]
- 더하여,
문제를 좀 더 자세히 읽자.
문제에 완주하지 못한자는 1명이라고 써있었다.
풀이할때는 몇명이 될 수 도 있다라는 가정으로 생각하고 풀어버렸다.
맨앞에 완주자가 있으면 바로 끝나도 되는것을 끝까지 돌고있으니...
반응형
'CodingTest > Level1' 카테고리의 다른 글
[연습] 코딩테스트-가운데 글자가져오기 (0) | 2020.01.15 |
---|---|
[연습] 코딩테스트-요일 맞추기 (0) | 2020.01.15 |
[연습]코딩테스트-k번째수 (0) | 2020.01.14 |
[연습]코딩테스트-모의고사 (0) | 2020.01.14 |
[연습]KaKaO 2020 Coding Test 1번 문자열 압축 (0) | 2020.01.08 |