본문 바로가기
#알고리즘 [Algorithm]/Problem

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

by cy_mos 2019. 4. 14.
반응형
카테고리 (Category) 작성 날짜 (Write Date) 최근 수정 날자 (Recent Write Date) 작성자 (Writer)
Algorithm 2019.04.14 21:37 2021.05.04. 22:35 Dev.Yang

 

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

 

[제한사항]

  • 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
  • 각 숫자는 1 이상 50 이하인 자연수입니다.
  • 타겟 넘버는 1 이상 1000 이하인 자연수입니다.

 

📄 [탐색] 타겟 넘버 C++ Source Code

#include <vector>
#include <iostream>
using namespace std;

void search(vector<int> numbers, int target, int sum, int * answer, int index) {

	int numberLength = numbers.size();

	if (index >= numberLength) {
		if (sum == target) { (*answer)++; return; }
		return;
	}

	search(numbers, target, sum + numbers.at(index), answer, index + 1);
	search(numbers, target, sum - numbers.at(index), answer, index + 1);
}

int solution(vector<int> numbers, int target) {
	
	int answer = 0;

	search(numbers, target, 0, &answer, 0);

	return answer;
}

📄 [탐색] 타겟 넘버 Swift Source Code

import Foundation

func searchTarget(number: [Int], depth: Int, target: Int, value: Int, answer: inout Int) {
    
    // MARK: - 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.
    if depth >= number.count {
        if target == value { answer = answer + 1 }
        return
    }
    
    // MARK: - 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 
    searchTarget(number: number, depth: depth + 1, target: target, value: value + number[depth], answer: &answer)
    searchTarget(number: number, depth: depth + 1, target: target, value: value - number[depth], answer: &answer)
}

func solution(_ numbers:[Int], _ target:Int) -> Int {
    
    var answer = 0
    searchTarget(number: numbers, depth: 0, target: target, value: 0, answer: &answer)
    
    return answer
}

🚀 REFERENCE

 

ChangYeop-Yang/Study-Algorithm

수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다. 알고리즘은 연산, 데이터 진행 또는 자동화된 추론을 수행한다. - ChangYeop-Yang/Study-Algorithm

github.com

 

코딩테스트 연습 - 타겟 넘버 | 프로그래머스

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘

programmers.co.kr

 

반응형

댓글