목록Set (5)
호기심 많은 분석가

오늘은 친구의 흥미로운 질문을 다뤄보고자 한다. 이 친구의 사고 방식은 참 배울 점이 많은데, DataFrame을 groupby 시켰을 때는 list의 형태인지, index의 type은 무엇인지, 작업하면서 한번도 의문을 가져본 적 없는 것들을 물어봐서 허를 찔린다. 나도 이런 의문을 항상 품으면서 살아야할텐데, 오늘은 그 중 새로 알게 된 사실에 대해 이야기 해보고자 한다. Intersection 바로 intersection인데, 해석하면 교집합으로 두 그룹 사이에 동시에 존재하는 원소들을 의미한다. Python에서 이 친구를 사용하기 위해서는 유의해야할 점이 한 가지 존재하는데, list형태에서는 작동하지 않아 반드시 set의 형태로 변환해줘야한다는 점이다. 아래와 같이 실행되는 것을 확인할 수 있다..

코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr from collections import Counter def solution(participant, completion): ans = Counter(participant)-Counter(completion) answer = list(ans.elements())[0] return answer 처음 봤을 때 가장 먼저 Counter 문법을 떠올리긴 했지만, Counter 결과끼리 뺄셈 연산이 되는지 몰라서 for문으로 풀었다. for문은 역시..

import sys n, m = map(int, sys.stdin.readline().split()) lis = set(sys.stdin.readline().rstrip() for _ in range(n)) see = set(sys.stdin.readline().rstrip() for _ in range(m)) ans = sorted(lis.intersection(see)) print(len(ans)) for i in ans : print(i) Solved.ac의 CLASS별로 문제를 풀고 있는데 이번 CLASS의 주제는 메모리와 시간 초과인가 보다. list를 사용해서 풀었더니 어림도 없었고, 중복되는 항을 찾기 위해 set의 intersection이라는 문법을 사용하였다. 사전 순으로 출력을 위해 s..

11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net import sys n = int(sys.stdin.readline().rstrip()) result = set() for _ in range(n) : com = sys.stdin.readline().split() if len(com)==1 : if com[0] == 'all' : result = set([k for k in range(1, 21)]) else : result = set() else : cd, x = com[0], int(com[1]) if cd == 'add' : result.ad..

리스트 안의 리스트 중 unique 한 것만 남겨두기 위해서 set을 적용해 주었더니 아래와 같은 Error가 발생하였다. 무엇이 문제일까? TypeError: unhashable type: 'list' 리스트 안의 str 같은 원소들의 경우 별문제가 없다. 그렇다면 list가 unhashable 하다는 것이 무슨 의미인가? unhashable type: list hashable hashable이라는 것은 어떤 데이터를 hash 함수를 이용해서 hash값으로 변환할 수 있다는 것을 의미 hash는 어떤 특정 데이터에 대해서, 매우 유니크한 하나의 값을 가지게 된다. 그런데 원래 데이터가 변한다면, 이 데이터가 변함에 따라서 해당 hash 값도 변하게 될 것 따라서 hashable 하기 위해서는 immut..