본문 바로가기

문제 풀이/Programmers

[프로그래머스] 짝지어 제거하기 (JAVA)

문제 출처 - Programmers

문제는 여기

 

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

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

programmers.co.kr


[풀이]

1. 주어진 문자열을 한 글자씩 잘라서 탐색을 한다.

2. 스택이 비어있지 않고 스택의 peek()이 현재 글자와 같다면 스택을 pop()해주고 아니라면 현재 글자를 push()해준다.

3. 모든 글자에 대해 다 진행하고 스택이 비었다면 1을 출력하고 아니라면 0을 출력한다.

[접근]

1. 스택을 사용하는 가장 기본적인 문제라고 생각하였다.

2. 한 글자씩 잘라 스택과 비교하며 체크해나가면 되겠다고 생각하였다.

[코드]

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        Stack<Character> stack = new Stack<>();
		
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			
            // 스택이 비어있지 않고
            // 스택의 맨 위가 일치하면
			if (!stack.isEmpty() && stack.peek() == c)
                stack.pop(); // 제거
			else // 아니면
                stack.push(c); // 추가
		}

        // 스택이 비어있으면 1 출력 아니면 0출력
		return stack.isEmpty() ? 1 : 0;
    }
}