비트 연산으로 순열 동작하는 코드를 'in' 연산이랑 비교하고자 한다.
import time
current = time.time()
n, r = map(int, input().split())
arr = []
def permutation(arr):
if len(arr) >= r:
# print(*arr, sep=' ')
return
for i in range(1, n+1):
if i not in arr:
arr.append(i)
permutation(arr)
arr.pop()
permutation(arr)
print(time.time() - current)
# 20, 5 기준으로
# 1.26초
import time
current = time.time()
n, r = map(int, input().split())
def permutation(bit_num):
if bit_num.bit_count() >= r:
arr = []
cnt = 0
while True:
if not bit_num:
return
num = bit_num % 2
# print(num if num else 0, sep=' ')
bit_num //= 2
for i in range(n):
tmp = 1 << i
if not bit_num & tmp:
bit_num, tmp = bit_num | tmp, bit_num
permutation(bit_num)
bit_num = tmp
permutation(0)
print(time.time() - current)
# 상당히 느린 것을 확인