코딩테스트/프로그래머스

[프로그래머스]짝지어 제거하기 - Java

GAEBAL 2022. 7. 24. 16:26
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

반복문 안에서 문자 하나하나 앞뒤를 비교해가면서 문제를 풀 수도 있지만 자료구조를 잘 활용하면 반복문으로 한번 더 안감싸고 더 쉽게 풀 수 있음 !!!

 

여기서 말한 자료구조는 Stack임 !

 

Stack을 이용하면 반복문을 여러번 돌 필요가 없이, Stack에 데이터를 넣을 때마다 비교를 통해서 문자열을 짝지어서 제거할지 안할지 정할 수 있음

 

코드를 보면 무슨 말인지 알 수 있을거임 !

 

 

 

코드

// 코딩테스트 연습 - 2017 팁스타운 - 짝지어 제거하기
// https://school.programmers.co.kr/learn/courses/30/lessons/12973

package PROGRAMMERS.level2;

import java.util.Stack;

public class Num12973_짝지어제거하기 {
    public static class Solution {
        public int solution(String s) {
            Stack<Character> stack = new Stack<>();

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

            if (stack.isEmpty()) {
                return 1;
            } else {
                return 0;
            }
        }
    }


    public static void main(String[] args) {
        Solution s = new Solution();

        System.out.println(s.solution("baabaa"));
        System.out.println(s.solution("cdcd"));
    }
}
728x90