문제

짝지어 제거하기

 

 

문제 설명

> 입력 : 알파벳 소문자로 이뤄진 문자열
> 과정 :
 1) 문자열에서 같은 알파벳 두 개가 붙어있는 짝을 찾음
 2) 과정을 반복해서 문자열 모두 제거하면 짝지어 제거하기가 종료
 3) 성공적인 수행은 1, 아니면 0 을 리턴

 

 

해결 방식

1) Stack 활용

[ 반복문 ]
2) 문자열을 순회하며 스택에서 peek()한 요소와 현재 순회중인 문자가 같으면 pop
3) 아니면 push()
4) 만약 스택이 비어있으면 push

[ 출력 ]
5) 만약 스택이 비어 있으면 1 출력
6) 아니면 0 출력

 

 

소스코드

import java.util.Stack;

public class 짝지어제거하기 {
    /**
     - 문제 설명:
     > 입력 : 알파벳 소문자로 이뤄진 문자열
     > 과정 :
      1) 문자열에서 같은 알파벳 두 개가 붙어있는 짝을 찾음
      2) 과정을 반복해서 문자열 모두 제거하면 짝지어 제거하기가 종료
      3) 성공적인 수행은 1, 아니면 0 을 리턴

     - 해결 방식:
     1) Stack 활용
     [ 반복문 ]
     2) 문자열을 순회하며 스택에서 peek()한 요소와 현재 순회중인 문자가 같으면 pop
     3) 아니면 push()
     4) 만약 스택이 비어있으면 push
     [ 출력 ]
     5) 만약 스택이 비어 있으면 1 출력
     6) 아니면 0 출력

     **/
    public static void main(String[] args) {
        System.out.println(solution("baabaa"));
    }

    public static int solution(String s)
    {
        int answer = -1;

        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            if(stack.isEmpty()){
                stack.push(s.charAt(i));
            }
            else if (stack.peek() == s.charAt(i)) {
                stack.pop();
            } else {
                stack.push(s.charAt(i));
            }
        }

        if(stack.isEmpty()) answer = 1;
        else answer = 0;

        return answer;
    }
}

 

'프로그래머스' 카테고리의 다른 글

최솟값 만들기  (0) 2022.10.26
영어 끝말잇기  (0) 2022.10.26
피보나치 수열 문제  (0) 2022.10.26
N개의 최소공배수  (0) 2022.10.26
두 큐 합 같게 만들기  (0) 2022.10.09

+ Recent posts