관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 프로그래머스 짝지어 제거하기 -2017 팁스타운- 스택(Stack) 본문

알고리즘/스택, 큐

[알고리즘] 프로그래머스 짝지어 제거하기 -2017 팁스타운- 스택(Stack)

막무가내막내 2020. 5. 15. 23:16
728x90

https://programmers.co.kr/learn/courses/30/lessons/12973

 

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

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

programmers.co.kr

 

 

프로그래머스 LEVEL2 의 짝지어 제거하기 문제를 풀어봤습니다. ㅎㅎ

처음에 문자열로 비교해서 양쪽이 같은 경우도 제거해주는 건줄 알았는데 아니었고 한 단어로만 비교해주면 되는 문제이기 때문에 스택으로 쉽게 풀 수 있었습니다.

 

풀이는 다음과 같습니다.

import java.util.Stack;

class Solution {
    public int solution(String s) {
        Stack<Character> stack = new Stack<>();
        int answer = 0;
        for (int i = 0; i < s.length(); i++) {
            if (!stack.isEmpty()) {  //비어있지 않으면 최근 단어와 비교해서 같으면 기존 단어와 새로들어오는거 모두 스택에서 제거
                if (stack.peek() == s.charAt(i)) {
                    stack.pop();
                }
            } else { //비어있는 경우 추가
                stack.push(s.charAt(i));
            }
        }
        if (stack.isEmpty()) { // 비어있다면 다 제거된거므로 답은 1
            answer = 1;
            
        }

        return answer;
    }
}
728x90
Comments