minghxx.blog
  • [프로그래머스 / 자바] 컨트롤 제트
    2023년 10월 25일 09시 50분 32초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    문제

    숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해 보세요.

    풀이

    스택이용해서 풀어봤다. 인덱스 때문에 고생 좀 했다😂

    import java.util.Stack;
    class Solution {
        public int solution(String s) {
            int answer = 0;
    
            String[] s1 = s.split(" ");
            
            Stack<Integer> numbers = new Stack<>();
            
            for(int i = 0; i < s1.length; i++){
                if(!s1[i].equals("Z")){
                    numbers.push(Integer.parseInt(s1[i]));
                } else {
                    System.out.println(i+" "+s1[i]);
                    if(numbers.size() >= 1){
                        numbers.pop();
                    }
                }
            }
    
            for (int i = 0; i < numbers.size(); i++){
                answer+=numbers.get(i);
            }
            return answer;
        }
    }

     

     

    참고할만한 다른 사람 풀이

    import java.util.*;
    
    class Solution {
        public int solution(String s) {
            int answer = 0;
            Stack<Integer> stack = new Stack<>();
    
            for (String w : s.split(" ")) {
                if (w.equals("Z")) {
                    stack.pop();
                } else {
                    stack.push(Integer.parseInt(w));
                }
            }
            for (int i : stack) {
                answer += i;
            }
            return answer;
        }
    }

     

    728x90
    댓글