Search

짝지어 제거하기

카테고리
알고리즘 💡
유형
#Level 2 #자료구조 #스택
Date
Tags
1 more property

문제

같은 문자가 붙어있으면 제거한다.
위 과정을 반복해서 문자가 남아있으면 0 남아있지 않으면 1을 반환
1.
baabaa (붙어 있는 aa 제거)
2.
bbaa (붙어 있는 bb 제거)
3.
aa (붙어 있는 aa 제거)
4.

풀이

1.
문자열을 하나 씩 가져온다. (이하 C 라고 칭함)
2.
바로 이전에 넣은 스택에서 문자를 꺼내 C 와 비교한다.
3.
같을 경우 C 를 꺼내고 다를 경우 C 를 스택에 넣는다.
4.
1 번으로 돌아간다.
연결된 문자열을 제거했을 떄 문자열을 다시 한번 순회하지 않도록 스택을 사용해서 문자를 두개 씩 비교하며 먼저 제거하는 방법을 선택했다.
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; } }
Java
복사