새소식

Algorithm/Programmers

(JAVA) [프로그래머스] 12973번, 짝지어 제거하기

  • -
728x90

 

 

프로그래머스

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

programmers.co.kr

 

12973, 짝지어 제거하기

📌 [ 난이도 : LEVEL 2 ]

이번 문제는 Stack 을 활용하여 풀이를 진행했다.

 

📚 Process

초기화 및 선언

구현

: 문자가 같은 문자를 제거하는 방법을 계속 진행해야 한다. 이것을 문자를 하나씩 넣는데 넣기 전에 이전에 들어있는 것을 하나씩 확인하면서 같으면 제거하고 아니면 add 해주는 방식의 stack 을 활용해서 풀이하면 된다.

1. stack 이 비어있으면 넣어준다.

2. 비어있지 않다면 직전에 들어간 것과 비교한다.

2-1. 넣어야 하는 문자와 직전에 들어간 문자가 같다면 이전에 들어간 문자를 빼고 넣어주지 않는다.

2-2. 같지 않다면 그냥 넣어준다.

3. stack 의 크기를 확인한다.

 

✅ 전체 코드

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        Stack<Character> stack = new Stack<>();
        for(char c : s.toCharArray()) {
            // 비어있으면 무조건 insert
            if(stack.isEmpty()) {
                stack.add(c);
                continue;
            }
            // 마지막에 들어있는 것과 같다면
            if(stack.peek().equals(c)) {
                stack.pop();
                continue;
            }
            
            stack.add(c);
        }

        return (stack.isEmpty()) ? 1 : 0;
    }
}
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.