본문 바로가기

Python

(6)
백준 7490 0 만들기 * itertools의 product 이용from itertools import*_,*l=map(int,open(0))o=' +-' # 결합 및 +-연산자while l: n,*l=l t=set() # 결과값을 저장해 둘 set(동일 값이 여러개 나올 수 있음으로) for e in product(o,repeat=n): # n길이의 데카르트 곱(cartesian product) s='1' for i in range(1,n): s+=e[i]+str(i+1) # 연산자 + 숫자 if eval(s.replace(' ',''))==0: t.add(s) # 공백을 없애고 평가한 값이 0이 될 경우 결과에 추가 print(*sorted(t),sep='\n') # 정렬 후 출력 print() * 브루트포..
bisect bisect는 사전에 다음과 같이 정의 되어 있다. "to divide into two usually equal parts" 파이썬에서는 이분탐색을 통해 정렬된 목록에서 특정값을 삽입할 위치를 찾거나 정렬된 순서로 특정값을 삽입할 때 사용한다. from bisect import * lst =[1,3,5,5,6,8,9] # bisect_left # 정렬된 순서를 유지하도록 리스트에 원소를 삽입할 위치를 찾는다 pos = bisect_left(lst,2) # 2를 삽입할 인덱스는 어디인가? print(pos) # 1 # insort_left # 내부적으로 bisect_left로 삽입할 인덱스를 찾고 리스트의 insert 함수를 호출한다. insort_left(lst, 2) print(lst) # [1, 2,..
파이썬 리스트 ● 요소별로 곱하기 a = [1, 2, 3] b = [4, 5, 6] # zip()함수 사용 # zip(a, b) 는 [(1, 4), (2, 5), (3, 6)] 을 리턴. 각 튜플을 x, y가 받아서 곱하기 m = [x * y for x, y in zip(a, b)] print(m) # 람다함수 사용 m = list(map(lambda x, y: x * y, a, b)) print(m)
Python 승수 연산의 속도 (**연산자, *반복사용, pow()함수) 파이썬에서 승수 연산을 하는 방법 3가지 테스트. 4승까지는 곱하기를 반복하는 방법, 5승 이후로는 pow()함수가 빠르다. pow()함수는 속도가 일정. import time, math s = time.time() for i in range(1000000): r=i**10 print(" ** 사용 :", "%.3f"%(time.time()-s)) s = time.time() for i in range(1000000): r=i*i*i*i*i*i*i*i*i*i print(" * 반복사용 :", "%.3f"%(time.time()-s)) s = time.time() for i in range(1000000): r=math.pow(i, 10) print("pow() 함수 :", "%.3f"%(time.time..
:= 바다코끼리 연산자(the walrus operator) 파이썬 3.8 부터. 바다코끼리의 눈과 엄니를 닮았다. 루프 종료를 검사하기 위해 값을 계산한 다음 루프의 바디에서 그 값이 다시 필요한 while 루프에 유용. n = int(input()) while 1: m = int(input()) if m == 0: break 변수 대입과 루프 종료 검사를 한번에. 다음과 같이 바꿀 수 있다. n = int(input()) while m := int(input()):
Asterisks (* **) in Python 1. 함수를 콜할 때 인자로 전달되는 iterable 객체를 unpacking animal = ['monkey', 'giraffe', 'lion', 'elephant'] print(animal[0], animal[1], animal[2], animal[3]) monkey giraffe lion elephant print(*animal) monkey giraffe lion elephant ○ 2차원 배열 전치행렬 n = [[1, 4], [2, 5], [3, 6]] print(*n, sep='\n') [1, 4] [2, 5] [3, 6] n2 = [list(row) for row in zip(*n)] print(*n2, sep='\n') [1, 2, 3] [4, 5, 6] zip(*n)은 n을 unpacki..