-
[프로그래머스] 타겟넘버 (파이썬)알고리즘 2022. 2. 3. 21:30
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
문제 풀이
이 문제는 재귀를 이용한 완전탐색으로 쉽게 해결할 수 있다.
숫자 앞에 + 나 - 둘 중 1개가 올 수 있으므로, 총 만들수 있는 경우의 수는 2^n 이다.
즉 Big(O) = 2^n 이다.
문제에서 n 의 범위가 20 이하라고 했으므로( 백만번 계산 ), 시간초과는 절대 안걸린다.
시간 복잡도
Big(O) = 2^n
소스 코드
cnt = 0; def solution(numbers, target): n = len(numbers); def rec(answer, order): global cnt; if order >= len(numbers): if answer == target: cnt += 1; return ; rec(answer + numbers[order], order + 1); rec(answer - numbers[order], order + 1); rec(-numbers[0], 1); rec(numbers[0], 1); return cnt;
'알고리즘' 카테고리의 다른 글
[프로그래머스] 단어변환 (파이썬) (0) 2022.02.03 [프로그래머스] 네트워크 (파이썬) (0) 2022.02.03 [프로그래머스] 도둑질 (파이썬) (0) 2022.02.02 [프로그래머스] 정수 삼각형 (파이썬) (0) 2022.02.02 [프로그래머스] N으로 표현 (파이썬) (0) 2022.02.02