새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[프로그래머스] 타겟넘버

by 언호 2022. 1. 16.

📖 문제


🧑🏻‍💻 풀이 과정

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

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > 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

댓글