[JAVA] 프로그래머스 : 짝지어 제거하기

조예빈·2024년 7월 20일
0

Coding Test

목록 보기
64/138

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

stack을 활용하는 문제이다.
이 때, if(!stack.isEmpty() && now == stack.peek())라는 조건문을 사용할 때 스택이 비어있지 않다는 조건이 먼저 와야 한다. 스택이 먼저 비어있는지 확인하고 비어있지 않은 경우에만 peek를 해 주어야 하기 때문이다. 만약, peek가 먼저 온다면 exception이 던져진다.

import java.util.*;

class Solution{
    public int solution(String s){
        Stack<Character> stack = new Stack<>();
        int answer = 0;
        //stack에서의 상위값이랑 현재 집어넣으려는 값이랑 같으면 둘 다 pop
        for(int i=0;i<s.length();i++){
            char now = s.charAt(i); //현재 문자
            if(!stack.isEmpty() && now == stack.peek()){ //현재 글자와 스택의 최상단 요소가 같고 스택이 비어있지 않다면
                stack.pop(); //최상단 요소 pop
            }else{ //현재 글자와 스택의 최상단 요소가 다르거나 스택이 비어있다면
                stack.push(now); //현재 요소를 stack에 넣음
            }
        }
        if(stack.isEmpty()){
            answer = 1;
        }
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글