📖 문제
🧑🏻💻 풀이 과정
1) 문제 이해 및 접근
특정 자릿수의 숫자가 더하기 아니면 빼기를 진행하여야 하므로 각 자리마다 두가지의 경우가 생깁니다.
첫번째 반복문에서 모든 경우의 수를 반복하고, 두번째 반복문에서 각 자릿수마다 확인하여 더하기와 빼기를 진행합니다.
2) 알고리즘
- 완전탐색
3) 풀이 코드
사용 언어 - Python
def solution(numbers, target):
answer = 0 # 정답의 개수
for i in range(1<<len(numbers)): # 2^(숫자의 개수)
tmp_sum = 0 # 초기 합은 0
for j in range(len(numbers)): # 각 자릿수 만큼 반복
if i & (1<<j): # 현재 자리가 더하기라면
tmp_sum += numbers[j]
else: # 현재 자리가 빼기라면
tmp_sum -= numbers[j]
if tmp_sum == target: # 타겟넘버를 찾으면, 정답 개수 추가
answer += 1
return answer
📝 결과 및 학습한 내용
1) 어려웠던 내용
특별히 없습니다.
2) 새롭게 학습한 내용
특별히 없습니다.
🔗 문제 링크
- https://programmers.co.kr/learn/courses/30/lessons/43165
※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다
'알고리즘 문제풀이 > Python' 카테고리의 다른 글
[백준] 22944 죽음의 비 (0) | 2022.01.18 |
---|---|
[프로그래머스] 튜플 (0) | 2022.01.17 |
[백준] 6443 애너그램 (0) | 2022.01.15 |
[백준] 15649 N과 M (1) (0) | 2022.01.14 |
[백준] 1275 커피숍2 (0) | 2022.01.13 |
댓글