-
[프로그래머스] 컨트롤 제트알고리즘 2023. 8. 3. 17:16
문제
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다.
숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
풀이
문제에서 주어진대로 구현하면 된다.
숫자를 모두 더하다가 Z가 나오면 바로 이전에 더했던 수를 다시 원복시킨다.
첫 글자에는 Z가 나온다는 조건이 없기 때문에 for문 한번으로 구현하는 것이 더 빠를 수 도 있지만
그래도 Stack을 활용하고 싶은 마음에 Stack을 사용했다.
push를 하다가 Z를 만나면 pop을 하도록 하고, 마지막에 stack에 남아있는 모든 것들을 더하였다.import java.lang.*; import java.util.*; class Solution { public int solution(String s) { int answer = 0; Stack<Integer> stack = new Stack<>(); StringTokenizer st = new StringTokenizer(s, " "); while(st.hasMoreTokens()) { String str = st.nextToken(); if (str.equals("Z")) { stack.pop(); } else { stack.push(Integer.parseInt(str)); } } while(!stack.isEmpty()) { answer += stack.pop(); } return answer; } }
728x90'알고리즘' 카테고리의 다른 글
[프로그래머스] 같은 숫자는 싫어 (0) 2023.08.04 [프로그래머스] 예상 대진표 (0) 2023.08.04 [프로그래머스] 짝지어 제거하기 (0) 2023.08.03 [프로그래머스] 멀쩡한 사각형 (0) 2023.08.02 [프로그래머스] 방문길이 (0) 2023.08.01