프로그래머스 문제풀이/Level 0

숨어있는 숫자의 덧셈 (2) (자바, Java)

뮤츠 2022. 12. 11. 21:48

생각보다 까다로웠던 문제.

붙어있는 숫자는 '하나의숫자' 로 간주된다. 따라서, 숫자가 나오면 스택에 넣어두고,

숫자가 아닌 알파벳이 나오면 스택에서 차례로 뱉어주면서 각 자릿수로 만들어 더해주면 된다.

 

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        int l = my_string.length();
        Stack<Integer> stack = new Stack<>();
        for (int i=0; i<l; i++) {
        	char ch = my_string.charAt(i);
        	if (ch>='0' && ch<='9') {
        		stack.add(Character.digit(ch, 10));
        	} else {
        		answer += assemble(stack);
        	}
        }
        
        if (!stack.isEmpty()) {
        	answer+=assemble(stack);
        }
        
        return answer;
    }
    
    public int assemble(Stack<Integer> stack) {
    	int answer=0;
    	int size = stack.size();
		for (int i=0; i<size; i++) {        			
			answer += Math.pow(10, i) * stack.pop();
		}
		return answer;
    }
}