프로그래머스

[Programmers] 12973. 짝지어 제거하기 (java)

jooona 2021. 9. 10. 12:01
반응형

해당 문제는 스택을 이용하면 쉽게 해결할 수 있습니다.

 

입력으로부터 받은 s로부터 앞에서부터 한 글자씩 확인하며, 다음의 단계를 수행합니다.

 

1. 스택이 비어있다면, 해당 글자를 스택에 push한다.

2. 스택 최상단의 글자와 해당 글자가 같다면 스택을 pop 해준다.

3. 스택 최상단의 글자와 해당 글자가 다르다면, 스택에 push한다.

 

전체 문자열 s에 대해 위의 단계를 수행했다면, 정답을 도출해 낼 수 있게 됩니다.

 

만일 스택이 비어있다면, 모든 문자열이 제거된 것이므로 1을 리턴합니다.

반면, 스택에 하나의 글자라도 차있다면, 모든 문자열을 제거하지 못했으므로 0을 리턴합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.*;
import java.util.*;
 
class Solution
{
    public int solution(String s)
    {
        Stack<Character> st = new Stack<>();
        int answer = -1;
        int cnt = 0;
        while(cnt < s.length()){
            if(st.isEmpty()){
                st.push(s.charAt(cnt));
            }
            else{
                if(st.peek() == s.charAt(cnt)){
                    st.pop();
                }
                else{
                    st.push(s.charAt(cnt));
                }
            }
            cnt++;
            
        }
 
        if(st.isEmpty()){
            return 1;
        }
        else
            return 0;
    }
}
cs

 

반응형