본문 바로가기
알고리즘

프로그래머스 두 개 뽑아서 더하기 (python, 파이썬)

by 블쭌 2021. 1. 8.
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

댓글