[프로그래머스 Lv.2] 짝지어 제거하기

너구리로소이다·2023년 3월 15일
0

programmers-java-lv2

목록 보기
10/55

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

문제 설명

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다.
먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다.
그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다.
이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다.

문자열 S = baabaa 라면
b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.

문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.

제한사항

  • 문자열의 길이 : 1,000,000이하의 자연수
  • 문자열은 모두 소문자로 이루어져 있습니다.

풀이

To-Do 리스트

  1. stack을 활용하여 제일 마지막의 값과 들어가려는 값이 같은 경우 제거.
  2. stack.empty()여부로 값이 있으면 0, 없으면 1.

결과

import java.util.*;
class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        char[] crr = s.toCharArray();
        Stack<Character> stack = new Stack<Character>();
        
        stack.push(crr[0]);
        for(int i = 1; i < crr.length; i++){
            if(stack.empty()) {
                stack.push(crr[i]);
                continue;
            }
            if(stack.peek() == crr[i]) stack.pop();
            else stack.push(crr[i]);
        }
        answer = stack.empty()?1:0;
        return answer;
    }
}
profile
일단 해보자 뭐든 되겠지 😄

0개의 댓글