docs.python.org/3/library/collections.html#collections.Counter
# 이 글은 자세한 설명이아닌 그냥 깨닫고 끄적이는 일기입니다..
프로그래머스 문제 중 가장 쉬운 문제를 풀었는데, 나는 list로만 풀어서 50점 맞았다. 시간복잡도를 고려하지 않았기 때문에... 내가얼마나 멍청했는지 알고 관련 공부를 하기로 함
python에는 collection이라는 라이브러리안에 Counter라는 타입이 있다.
Counter는 간단하게 말하면 key-value 형식으로 문자열을 counting 해준다.
근데 그 쓰임새가 Python의 Dictionary와 비슷해서 잘 안썼던것 같다.(사실 잘 몰라서 안썼지 뭐)
dictionary는 해쉬타입에 더 다양한 데이터 타입이 들어갈 수 있지만(함수도 들어감..)
Counter는 말 그대로 counting에 목적을 두고 있기 때문에 value가 숫자임..
프로그래머스 문제 풀이1 Hash
List 만 사용한건 쪽팔려서 안올림
dictionary만 사용
def solution(participant, completion):
sdict = {}
for i in participant:
if i in sdict:
sdict[i] += 1
else:
sdict[i] = 1
for i in completion:
if sdict[i] == 1:
del sdict[i]
else:
sdict[i] -= 1
print((sdict.keys()))
answer = list(sdict.keys())[0]
return answer
List의 차집합 사용(근데 얜 같은 문자열 들어올때 처리 안됨)
def solution2(p,c):
p_sub_c = [x for x in p if x not in c]
return p_sub_c
Counter사용 - 프로그래머스 1등 정답..
def solution3(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
ps. dictionary 형태이고 한명만 남는다는 가정이 있기 때문에 answer.pop() 해줘도 됨
'의지박약 > 기본기가없다' 카테고리의 다른 글
[자료구조] 데이터 구조 연산별 시간복잡도(Data Structure Operation) - javascript (0) | 2021.05.20 |
---|---|
[python] Operations 별 시간복잡도(TimeComplexity) - list, set, dictionary (0) | 2021.05.20 |
[python] 피보나치수열을 굳이 클로저를 사용해서.. (0) | 2021.05.13 |
얼마나 할지 모르겠지만.. (0) | 2021.05.13 |
댓글