알고리즘/프로그래머스 Level2

[프로그래머스,Java] Level2:짝지어 제거하기

류창 2021. 10. 13. 22:29
반응형

 

문제분석

 

문제 예시로, baabaa 라면, 문자열이 들어오면서 중복이 일어나면 제거하는 연산을 해주면된다.

 

문제를 많이풀면 눈치가 생기는데, 바로 Stack알고리즘이 안성맞춤이다.

 

 

문자열 S를 하나씩끊어서 Stack에다 집어넣고,

Stack.pop() 과 넣을문자가 같으면, 제거연산을 실행하면된다.

 

 

모든 문자열을 넣엇을때, 제거할수있으면 1 return

 

없으면 0을 return한다.

 

문제풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;
class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        Stack<Character> stack = new Stack<>();
        
        for(char data:s.toCharArray()){
            if(!stack.empty()&&stack.peek().equals(data)){
                stack.pop();
            }
            else{
            stack.push(data);
            }
        }
      
        if(stack.empty()){
            answer=1;
        }
        
        return answer;
    }
}
cs

 

반응형