728x90
코테를 준비하고 있는데요 !!
22년도 하반기까지 itertools나 sys와 같은 라이브러리를 사용 못했다고 해서
문의는 드렸으나 일단 직접 구현하는 방식으로 그냥 외워둬야겠어요
BFS를 활용한 순열 💭
N = 3
arr = [1, 2, 3]
sel = [0] * N
check = [0] * N
result = []
def perm(idx):
global result
if idx == N:
print(sel)
else:
for i in range(N):
if check[i] == 0:
sel[idx] = arr[i]
check[i] = 1
perm(idx+1)
check[i] = 0
perm(0)
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
재귀함수를 이용한 조합 💭
def comb(arr, n):
result = []
if n > len(arr):
return result
if n == 1:
for i in arr:
result.append([i])
elif n > 1:
for i in range(len(arr) - n + 1):
for j in comb(arr[i + 1:], n - 1):
result.append([arr[i]] + j)
return result
arr = [1, 2, 3]
print(comb(arr, 1))
print(comb(arr, 2))
print(comb(arr, 3))
[[1], [2], [3]]
[[1, 2], [1, 3], [2, 3]]
[[1, 2, 3]]
itertools 라이브러리를 이용한 순열, 조합 💭
import itertools
arr1 = [1, 2, 3, 4]
for i in itertools.permutations(arr1, 4):
print(list(i), end=' ')
for i in itertools.combinations(arr1, 3):
print(list(i), end=' ')
728x90
'SAMSUNG > 삼성 SW 역량 테스트 준비' 카테고리의 다른 글
[백준 20056번] 마법사 상어와 파이어볼 (Python) (0) | 2023.10.13 |
---|---|
[백준 13458번] 시험 감독 (Python) (0) | 2023.10.13 |
[백준 20055번] 컨베이어 벨트 위의 로봇 (Python) (0) | 2023.10.12 |
[백준 12100번] 2048(Easy) (Python) (2) | 2023.10.11 |
[백준 14891번] 톱니바퀴 (Python) (4) | 2023.08.04 |