ターゲット番号(Programmers 43165)
🧑💻 質問する
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.
たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
せいげんじょうけん
numberstargetreturn[1, 1, 1, 1, 1]35
🧑💻 解決策
🧑💻 DFS & BFS
from collections import deque
def bfs(graph, start_node) :
visit = list()
queue = list()
queue.append(start_node)
queue = deque(queue)
while queue :
node = queue.popleft()
if node not in visit :
visit.append(node)
queue.extend(graph[node])
return visit
def dfs(graph, start_node) :
visit = list()
stack = list()
stack.append(start_node)
while stack :
node = stack.pop()
if node not in visit :
visit.append(node)
stack.extend(reversed(graph[node]))
return visit
if __name__ == '__main__' :
graph = {
'A': ['B'],
'B': ['A', 'C', 'H'],
'C': ['B', 'D'],
'D': ['C', 'E', 'G'],
'E': ['D', 'F'],
'F': ['E'],
'G': ['D'],
'H': ['B', 'I', 'J', 'M'],
'I': ['H'],
'J': ['H', 'K'],
'K': ['J', 'L'],
'L': ['K'],
'M': ['H']
}
print(bfs(graph, 'A'))
print(dfs(graph, 'A'))
# 출력결과
#['A', 'B', 'C', 'H', 'D', 'I', 'J', 'M', 'E', 'G', 'K', 'F', 'L']
#['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M']
幅優先ナビゲーションDFSには、深度優先ナビゲーションの結果が表示されます.🧑💻 コード#コード#
from collections import deque
def solution_stack(numbers, target) :
answer = 0
length = len(numbers)
stack = []
stack.append([numbers[0], 0])
stack.append([-1 * numbers[0], 0])
while stack :
total, index = stack.pop()
index += 1
if length > index :
stack.append([total + numbers[index], index])
stack.append([total - numbers[index], index])
print(stack)
else :
if total == target :
answer += 1
return answer
def solution_queue(numbers, target):
answer = 0
length = len(numbers)
queue = deque()
queue.append([numbers[0], 0])
queue.append([-1 * numbers[0], 0])
while queue :
total, index = queue.popleft()
index += 1
if length > index :
queue.append([total + numbers[index], index])
queue.append([total - numbers[index], index])
print(queue)
else :
if total == target :
answer += 1
return answer
if __name__ == '__main__' :
numbers_1 = [1, 1, 1, 1, 1]
target_1 = 3
print(solution_stack(numbers_1, target_1))
print(solution_queue(numbers_1, target_1))
🧑💻 総評
Reference
この問題について(ターゲット番号(Programmers 43165)), 我々は、より多くの情報をここで見つけました https://velog.io/@moonpiderman/타켓-넘버-Programmers-43165テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol