https://programmers.co.kr/learn/courses/30/lessons/42576
try1. in 연산자
썼다가 효율성 0점 맞음 (당연함... 시간복잡도 O(n)... )
try2. binary_search
찾아가면서 진행했더니 효율성 테케 2개 fail
try3. 계수 정렬에서 착안해서 collections.Counter 사용해서 값 찾음
처음에는 set 연산 써서 참가자와 완주자의 차집합을 구해서 그 차집합의 길이가 0이 아니면 동명이인이 있다고 생각해서 동명이인 숫자를 most_common() 써서 출력했음.
근데 생각해보면 동명이인이 여러명 있고, 그 여러명이 다 통과할지 안할지 모르는 부분임..
try4. Counter 사용해서 등장횟수 체크하고, 완주하지 못한 선수는 딱 1명이니까 Counter 객체의 key, value값 비교해서 다른 요소를 찾아냄
만약 키값이 존재하고 value가 다를때와, 키값이 아예 존재하지 않을때 두가지 경우만 존재해서 풀음.
-> 다른 사람 코드 보니까 Counter객체는 빼기 연산이 가능해서 ... 단순히 빼주고 그 요소의 key값만 출력해줘도 됬었다. 그래도 목표 시간 1시간 안에는 품!
from collections import Counter
def solution(participant, completion):
answer = ""
c_p = Counter(participant)
c_c = Counter(completion)
for key_cp, value_cp in c_p.items():
# 만약 key가 존재하고 value값이 다르면 answer에 추가
if key_cp in c_c and value_cp != c_c.get(key_cp):
answer += key_cp
break
# key가 없으면 answer에 추가
elif not key_cp in c_c:
answer += key_cp
break
return answer
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 소수 찾기 - python (0) | 2022.07.22 |
---|---|
[프로그래머스] 비밀지도 (0) | 2022.07.02 |
[프로그래머스] 신규 아이디 추천 (python) (0) | 2022.07.01 |
[프로그래머스] 가장 큰 수 (0) | 2022.06.27 |
[프로그래머스] Lv2. 조이스틱 (0) | 2022.04.06 |