728x90
- 문제
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
- 제한사항
numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
- 입/출력
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
- 코드
def dfs(idx, value, numbers, visited):
global answer
if idx == 2:
answer.append(value)
return
for num in range(len(numbers)):
if visited[num]:
visited[num] = False
dfs(idx+1, value+numbers[num], numbers, visited)
visited[num] = True
def solution(numbers):
global answer
answer = []
visited = [True]*len(numbers)
dfs(0, 0, numbers, visited)
return sorted(list(set(answer)))
이중 for문으로 풀수도 있는데 백트래킹 공부삼아 dfs문제로 풀어보았다.
자세한 내용은 bladejun.tistory.com/5를 참고해주세요.
- 출처
programmers.co.kr/learn/courses/30/lessons/68644?language=python3
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 멀리 뛰기 (python, 파이썬) (0) | 2021.01.14 |
---|---|
프로그래머스 다음 큰 숫자 (python, 파이썬) (0) | 2021.01.13 |
프로그래머스 이중우선순위 큐 (python, 파이썬) (0) | 2021.01.03 |
프로그래머스 더 맵게 (python, 파이썬) (0) | 2021.01.01 |
백준 1654번: 랜선 짜르기 (python, 파이썬) (0) | 2020.12.30 |
댓글