모바일 개발하는 자바리안의 메모장

자바(JAVA) - 짝지어 제거하기(Programmers : 12973) 본문

Java/Java.algorithm

자바(JAVA) - 짝지어 제거하기(Programmers : 12973)

자바리안 2022. 3. 13. 22:33
반응형

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

 

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

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

programmers.co.kr

오랜만에 다시 알고리즘 공부를 하니 감이 많이 죽었다.

스택으로 간단하게 풀 수 있는 문제였는데, 뭔가에 홀린듯 while 안에서 for loop을 돌리다가 효율성에서 좌절,,

Stack에 하나씩 넣으며 pair가 되는 타이밍에 pop을 해주며 마지막에 아무것도 남아있지 않으면 모두 제거되었음을 쉽게 알 수 있는 문제였다..

 

import java.util.*;
class Solution
{
 public int solution(String s)
     {
        int answer = -1;
        int len = s.length();
        String str = s;

        Stack<String> stack = new Stack<String>();
        for(char ch : s.toCharArray()) {
            String strChar = ch + "";
            if(stack.isEmpty()) {
                stack.push(strChar);
                continue;
            }
            if(stack.peek().equals(strChar)) {
                stack.pop();
            } else {
                stack.push(strChar);
            }
        }
     
        return stack.isEmpty() ? 1 : 0;
   }
}
반응형
Comments