본문 바로가기
SMALL

Language10

다차원 배열 복사할 때 효율적으로 하는 방법 리스트 복사할 때 아래의 슬라이싱 방법이 제일 빨랐다. A = [1,2,3] copy_A = A[:] 다차원 배열은 이 방법이 안통해서 deepcopy만 되는 줄 알았는데, 리스트 컴프리헨션과 슬라이싱을 사용하면 가능하다. A = [[1,2], [3,4], [5,6]] copy_A = [x[:] for x in A] 2021. 9. 9.
리스트 안의 리스트를 파라미터로 넣기 Asterisk 아래와 같은 리스트가 있다고 하자. A = [[1,3], [2,4], [4,6]] 이 A리스트 안의 리스트들로 product 함수에 적용해서 조합을 만들고 싶다. ex ) n개의 주사위에 서로 다른 숫자들이 적혀있고, 각 주사위에서 나온 숫자들로 조합을 만들고 싶은 경우 리스트 A의 크기가 정해져있지 않다면, 굉장히 난감하다. 이럴 때에는 아래와 같이 표현하면 가능하다. list(itertools.product(*A)) # [(1, 2, 4), (1, 2, 6), (1, 4, 4), (1, 4, 6), (3, 2, 4), (3, 2, 6), (3, 4, 4), (3, 4, 6)] 2021. 8. 28.
8. 파이썬 거듭제곱 연산 파이썬에서 A의 B제곱을 구하는 방법은 아래와 같이 세 가지가 있다. 참고로, pow 함수를 사용하는 것이 ** 연산보다 빠르다. A = 10 B = 4 # 1 print(A**B) # 2 print(pow(A, B)) # 3 - A의 B 제곱을 C로 나눈 나머지 print(pow(A, B, C)) 2021. 8. 27.
7. 파이썬 math 라이브러리 파이썬 math 라이브러리 백준 2609번 문제에서 최대공약수, 최소공배수 문제를 푸는데 math 라이브러리로 풀 수 있는 것이었다. 어이없어 ㅋㅋ import math print(math.gcd(a, b)) print(math.lcm(a, b)) 2021. 8. 12.
6. 파이썬 input 읽기 - 백준 사이트에서 필수 사용! 파이썬 input 읽기 파이썬으로 input을 읽을 때, input()을 쓰는 방법과 sys.stdin.readline()을 쓰는 방법이 있다. SWEA의 경우 import sys가 안되기 때문에 input()을 쓰고, BOJ에서는 sys.stdin.readline()을 쓰는 것이 좋겠다. 정수 자료형 읽을 때 int(input()) int(sys.stdin.readline()) map(int, input().split()) map(int, sys.stdin.readline().split()) 문자열 읽을 때 readline()은 개행 문자를 포함하기 때문에 line의 끝에 공백이 붙는다. 이것을 제거하려면 rstrip()을 쓴다. sys.stdin.readline().rstrip() * rstrip().. 2021. 8. 11.
5. 파이썬 PriorityQueue vs heapq 파이썬에서 우선순위 큐는 queue 모듈의 PriorityQueue 와 heapq 모듈을 이용해 구현할 수 있다. 내부적으로는 PriorityQueue가 heapq 모듈을 그대로 사용한다는 점에서 비슷하지만, PriorityQueue는 스레드세이프(thread-safe)한 클래스라는 차이점이 있다. 즉, heapq는 스레드세이프를 보장하지 않는다. * 스레드세이프(thread-safe) : 멀티 스레딩에 안전한 프로그래밍 개념. 내부적으로 lock을 적용하기 때문에 locking overhead가 발생한다. 파이선의 GIL 특성으로 인해 멀티 스레딩이 거의 의미가 없다. 대부분 멀티 프로세싱으로 활용한다는 점을 생각하면 멀티 스레딩을 지원하는 스레드세이프는 의미가 없다. * 전역 인터프리터 락(Globa.. 2021. 8. 8.
LIST