💻 IT/📌 ALG

[프로그래머스] 타겟넘버 Java :: Stack 이용

GODSU 2021. 8. 15. 15:03
반응형

 

 

프로그래머스 '타겟넘버' 문제 입니다.

 

 

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

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

programmers.co.kr

 

 

 

import java.util.ArrayList;
import java.util.Stack;

class Solution {
    public int solution(int[] numbers, int target) {
        int answer = 0;
        int popNum = 0;
        int tempNumber = 0;

        Stack<Integer> rst = new Stack<Integer>();
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        rst.push(numbers[0]);
        rst.push(numbers[0]*-1);
        
        
    	for (int i = 1; i < numbers.length; i++) {
			tempNumber = numbers[i];
			list = new ArrayList<Integer>();
			
			while(!rst.isEmpty()) {
				popNum = rst.pop();
				
    			list.add(popNum+tempNumber);
    			list.add(popNum+(tempNumber*-1));
    		}
			
			for (int j = 0; j < list.size(); j++) {
				rst.push(list.get(j));
			}
			
		} 
    		
    	
    	for (Integer integer : rst) {
    		if(integer == target)
    			answer++;
		}
		
        return answer;
    }
}

 

반응형