REPL (Read Eval Print Loop) 이란?
입력(read)
평가(eval)
출력(print)
반복(loop)
컴파일 과정 없이 즉석에서 코드를 입력해 결과를 바로 알 수 있는 방식
회문 : 앞으로 읽어도 똑바로 읽어도 똑같은 단어와 문장
Q. 주어진 배열(numbers)에 대해 더하거나 빼서 target_number가 나올 수 있는 경우의 수를 구하시오.
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers, curr_idx, curr_sum):
# 1 (+-) 1 (+-) 1 (+-) 1 (+-) 1
# 경우의 수 = 연산자의 개수(5) ^ 숫자의 개수(2) = 2^5 = 32
if (curr_idx == len(numbers)):
return sums.append(curr_sum)
get_all_combinations(numbers, curr_idx + 1, curr_sum + numbers[curr_idx])
get_all_combinations(numbers, curr_idx + 1, curr_sum - numbers[curr_idx])
get_all_combinations(numbers, 0, 0) # 둘다 0부터 시작이니 0 두개 넣음
print(sums)
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers):
# +, - 는 각 1과 0으로 표현 -> binary
# ----- ~ +++++
for i in range(2 ** len(numbers)):
print(i)
get_all_combinations(numbers, 0, 0) # 둘다 0부터 시작이니 0 두개 넣음
print(sums)
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers):
# +, - 는 각 1과 0으로 표현 -> binary
# ----- ~ +++++
for i in range(2 ** len(numbers)):
binary_val = '{:05b}'.format(i)
print('binary_val : + str(binary_val))
get_all_combinations(numbers, 0, 0) # 둘다 0부터 시작이니 0 두개 넣음
print(sums)
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers):
# +, - 는 각 1과 0으로 표현 -> binary
# ----- ~ +++++
for i in range(2 ** len(numbers)):
binary_val = '{:05b}'.format(i)
print('binary_val : + str(binary_val))
operators = [el for el in list(binary_val)]
print('operators', operators)
get_all_combinations(numbers, 0, 0) # 둘다 0부터 시작이니 0 두개 넣음
print(sums)
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers):
# +, - 는 각 1과 0으로 표현 -> binary
# ----- ~ +++++
for i in range(2 ** len(numbers)):
binary_val = '{:05b}'.format(i)
print('binary_val : + str(binary_val))
operators = [int(el) for el in list(binary_val)]
print('operators', operators)
get_all_combinations(numbers, 0, 0) # 둘다 0부터 시작이니 0 두개 넣음
print(sums)
numbers = [1, 1, 1, 1, 1]
target_number = 3
sums = []
def get_all_combinations(numbers):
# +, - 는 각 1과 0으로 표현 -> binary
# ----- ~ +++++
for i in range(2 ** len(numbers)):
binary_val = '{:05b}'.format(i)
operators = [int(el) for el in list(binary_val)]
print('operators', operators)
# 루프 돌아보자. numbers의 len
# operator에 따라 1 또는 -1
curr_sum = numbers[0] if operators[0] == 1 else -numbers[0]
# 1~ len-1
for j in range(1, len(numbers)):
if operators[j] == 1:
curr_sum += numbers[j]
else:
curr_sum -= numbers[j]
sums.append(curr_sum)
get_all_combinations(numbers)
print(sums)
Meomo
return 은 조건에 맞는 결과가 있는거고 : 여기로 나오세여~
break 는 결과 없이 조건이 충족되면 함수를 중단 : 절벽 길없음