다희의 코딩 성장일기

[프로그래머스] level2. 짝지어 제거하기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level2. 짝지어 제거하기 (자바 JAVA)

ilmiodiario 2021. 8. 28. 21:17

[ 문제 ]  [프로그래머스] level2. 짝지어 제거하기 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12973

 

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

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

programmers.co.kr


# 접근 방법 및 풀이 

 

  • 보자마자 스택으로 풀면 되겠다고 생각했다.
  • 스택이 비어있으면 문자를 넣고, 스택이 비어있지 않다면 스택의 꼭대기 값현재 문자를 비교해서 같으면 pop, 다르면 add해주었다.
  • String s의 문자 전체를 다 탐색한 후, 스택에 값이 남아있다면 짝을 짓지 못한 문자들이 남아있기 때문에 실패고, 그게 아니라면 성공이다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
import java.util.*;
class Solution
{
    public int solution(String s)
    {
        if(s.length() == 1)
            return 0;
        Stack<Character> stack = new Stack<>();
        char arr[] = s.toCharArray();
        for(int i = 0; i < arr.length; i++){
            if(stack.isEmpty()){
                stack.add(arr[i]);
            }else{
                if(stack.peek() == arr[i])
                    stack.pop();
                else
                    stack.add(arr[i]);
            }
        }
        if(!stack.isEmpty())
            return 0;
        return 1;
    }
}

 

 

 

REVIEW

확실히 연도가 오래된 문제들은 금방 풀린다. 지금 코테 수준은 어마무시하게 올라갔지만..

Comments