[프로그래머스] Lv.0 컨트롤 제트

이다혜·2023년 11월 14일
0

프로그래머스

목록 보기
59/61

📎 문제 출처


https://school.programmers.co.kr/learn/courses/30/lessons/120853

📌 문제 설명


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

❓ 풀이 방법


  1. 임시 저장 변수 사용
    tmp 변수를 두어서 마지막 숫자를 저장해두었다가 Z를 만나면 tmp를 빼주었다.

  2. Stack 사용
    Z가 아닐때만 stack에 push하고 Z를 만나면 맨 위에 저장된 마지막 숫자를 pop으로 제거한다.

📌 Code


  1. tmp 변수에 마지막 숫자를 저장
class Solution {
    public int solution(String s) {
        int answer = 0;
        int tmp = 0;
        
        String[] arr = s.split(" ");
        
        for(String a : arr) {
            if(a.equals("Z")) {
                answer -= tmp;
            } else {
                answer += Integer.parseInt(a);
                tmp = Integer.parseInt(a);
            }
            
        }

        return answer;
    }
}
  1. stack 사용
import java.util.*;

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

0개의 댓글