Photo by Pietro Mattia on Unsplash
from collections import deque
import sys
cur_su, sister = map(int, input().split())
queue = deque([])
visited =[False]* 100001
visited[cur_su] = True
queue.append([cur_su, 0])
directions = ['+1' , '-1', '*2']
while queue:
cur_su, time = queue.popleft()
if cur_su == sister:
print(time)
sys.exit(0)
for direction in directions:
n_su = eval(str(cur_su) + direction)
n_time = time +1
if 0 <= n_su <= 100000 and not visited[n_su]:
visited[n_su] = True
queue.append([n_su , n_time])
print(-1)
from itertools import combinations
while True:
try:
selected_nums = list(map(int, input().split()[1:]))
for lotto_num in sorted(list(combinations(selected_nums, 6))):
print(' '.join(map(str, lotto_num)))
print()
except:
break
def combinations(array, num):
result = []
if num == 0:
return [[]]
for idx, elem in enumerate(array):
for others in combinations(array[idx+1:],num-1):
result.append([elem] + others)
return result
while True:
selected_nums = list(map(int, input().split()))
len_of_selected = selected_nums.pop(0)
if len_of_selected == 0:
break
for lotto_num in sorted(list(combinations(selected_nums, 6))):
print(' '.join(map(str, lotto_num)))
print()
def dfs(lotto, visited, input_nums):
if len(lotto) == 6:
for number in lotto:
print(input_nums[number], end = ' ')
print()
return
visited_now = visited[:]
for i in range(len(visited_now)):
if visited_now[i] ==0:
visited_now[i] = 1
dfs(lotto+[i], visited_now, input_nums)
while True:
selected_nums = list(map(int, input().split()))
if selected_nums[0] == 0:
break
len_of_selected = selected_nums.pop(0)
visited = [0] * len_of_selected
dfs([],visited, input_nums)
print()
속도는 아래와 같다.
itertools > dfs > 자체함수제작
왼쪽으로 갈수록 빠름