ALGORITHM/PROGRAMMERS

[프로그래머스] 짝지어 제거하기 (2017 팁스타운)

0298 2021. 7. 28. 10:14

https://programmers.co.kr/learn/courses/30/lessons/12973?language=java 

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

2021-07-28


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
class Solution {
    public int solution(String s) {
        Stack<String> stack = new Stack<>();
        for(int i = 0; i < s.length(); i++) {
            String val = String.valueOf(s.charAt(i));
            if(!stack.isEmpty()) {
                String tmp = stack.peek();
                if(tmp.equals(val)) stack.pop();
                else stack.push(val);
            } else stack.push(val);
        }
        if(stack.isEmpty()) return 1;
        else return 0;
    }
}
cs

 

#문제풀이

솔직히 처음에 보자마자 stack이 생각나진 않았다;; 

 

1. stack이 비어있지않을때, peek()을 했을 때 값과 내가 지금 넣으려는 문자의 값이 같으면 pop()해준다.

 

2. 아니면, 새로운 문자를 push한다.

 

3. stack이 비어있으면 push 한다.