해당 문제는 저번 주에 풀었던 스택 문제의 기본기라고도 할 수 있는데요! 이번 문제는 스택의 기본기라고도 생각해서 좀 더 심혈을 기울여 알고리즘 설명 그림을 제작해 보았습니다.
- 짝이 맞는 경우
(자료 출처 : 미리캔버스로 제작했습니다.)
- 짝이 맞지 않는 경우
다음은 해당 문제를 JS 버전으로 푼 문제입니다.
- 자바스크립트 버전
function solution(s){ let stack = []; let arr = s.split(""); for (let char of arr) { if (stack.length > 0 && stack[stack.length - 1] === char) { stack.pop(); } else { stack.push(char); } } return stack.length === 0 ? 1 : 0; }
그리고 자바 버전으로 구현한 코드는 다음과 같습니다.
- 자바 버전
import java.util.Stack; class Solution{ public int solution(String s){ Stack<Character> stack = new Stack<>(); for (char c : s.toCharArray()) { if (!stack.isEmpty() && stack.peek() == c) { stack.pop(); } else { stack.push(c); } } return stack.isEmpty() ? 1 : 0; } }