코딩 테스트
[Python3] 프로그래머스 레벨 1 - 완주하지 못한 선수
귀건
2021. 6. 6. 02:14
728x90
반응형
처음 생각한 코드.
def solution(participant, completion):
answer = ''
#participant 마라톤 참여 선수
#completion 마라톤 완주 선수
#완주하지 못한 선수는 한 명.
for i in completion:
if i in participant:
participant[participant.index(i)] = ''
for i in participant:
answer += i
return answer
정확도는 다 맞았으나, 효율성 테스트에서 모두 탈락.
index 연산에서 하나씩 찾는 것이 굉장히 오래 걸릴 것이라고 생각함.
바로 딕셔너리를 원소의 이름 : 원소의 개수로 만듬 -> 구글링으로 찾아냄
# 최종 답안
def solution(participant, completion):
answer = ''
#participant 마라톤 참여 선수
#completion 마라톤 완주 선수
#완주하지 못한 선수는 한 명.
part_dic = {}
comp_dic = {}
for i in participant:
try : part_dic[i] += 1
except : part_dic[i] = 1
for i in completion:
try : comp_dic[i] += 1
except : comp_dic[i] = 1
for i in comp_dic:
part_dic[i] = part_dic[i] - comp_dic[i]
for i in part_dic:
if part_dic[i] >= 1:
answer += i
break
return answer
그리고 completion과 participant의 원소의 갯수를 키값에 따라 뺌.
완주하지 못한 선수는 한명이기 때문에 1개 이상 남아 있는 participant의 원소는 완주하지 못한 선수. 바로 break.
다 풀고 다른사람의 풀이를 봤는데 collections 라이브러리의 counter를 사용해서 작성함..
범접하지 못할 경이로움을 느낌.. ㄷㄷ
레벨 1도 어려웠다ㅠㅠ
728x90
반응형