다중 집합
집합은 기본적으로 중복을 허용하지 않는다. 따라서 다중집합에 관한 문제는 리스트를 사용한다. a = [1, 1, 2, 3, 4, 6] b = [1, 2, 3, 3, 4, 5] 다중 집합 사이의 연산은? 다중 합집합의 경우 연산 전에 집합을 복사해서 이용하기로 하자. a = [1, 1, 2, 3, 4, 6] b = [1, 2, 3, 3, 4, 5] # 다중 합집합 temp = lst1.copy() union = lst1.copy() for i in lst2: if i not in temp: union.append(i) else: temp.remove(i) # 다중 교집합 intersection = [] for i in lst2: if i in lst1: lst1.remove(i) intersection.a..
더보기
[파이썬] itertools ,순열, 조합 등
순열, 조합 등 경우의 수를 구할 때 쓰는 파이썬 라이브러리 itertools 수학적 지식은 따로 안다고 가정하고 바로 라이브러리를 사용해보자. 경우의 수 전체를 파악하려면 해당 함수사용후 리스트로 변환해주는것이 편하다. 순열 itertools.permutations(iterable, n) import itertools # n=4, r=2 -> 12 = 4*3 x = list(itertools.permutations([1,2,3,4],2)) # [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] 중복순열 itertools.product(iterable, repeat=n) 조합 iter..
더보기
[파이썬] Counter 객체
Counter는 dict의 서브클래스이다. 요소의 개수를 세어준다. key(요소)와 value(개수) 형태로 저장된다. 객체 간 연산이 가능하다. 예시) import collections s1 = collections.Counter(['a','a','b','c','d']) s2 = collections.Counter('aabcd') # s1 = Counter({'a': 2, 'b': 1, 'c': 1, 'd': 1}) # s2 = Counter({'a': 2, 'b': 1, 'c': 1, 'd': 1}) s3 = collections.Counter({'a': 2, 'b': 1, 'c': 1, 'd': 1}) # dict객체를 넣으면 그대로 s4 = collections.Counter(a=2,b=1,c=1..
더보기
[파이썬] 내장 함수 zip
zip() 한 번에 두개 이상의 인자에 접근하면서 for 문을 돌고 싶을 때 사용 문제1) 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) a = [1, 2, 3, 4] b = [-3, -1, 0, 2] result -> 3 내가 짠 코드 def solution(a, b): answer = 0 for i in range(len(a)): answer += a[i]*b[i] return answer zip 함수 활용 def solution(a, b): answer = 0 for ..
더보기