https://programmers.co.kr/learn/courses/30/lessons/12973?language=java 

 

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

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

programmers.co.kr


풀이 과정


  1. Java에서는 Python과 다르게 문자열 다루기가 조금 난해한거 같다..ㅜ
    1. 문자열의 toCharArray 메서드를 사용하거나 아니면 int[] 배열 형식으로 문자들을 처리하는 방식이 가장 좋아보이는 것 같음.
  2. 문제의 내용을 살펴보면, 두가지 과정을 반복해서 진행하면 된다.
    1. 스택의 맨 위의 값이 이번에 넣으려는 문자와 같다면, 스택에 있는 값을 빼주고 다음 문자로 넘어감.
    2. 스택의 맨 위 값과 이번에 넣으려는 문자와 다르면, 그냥 스택에 문자를 넣어준다.
  3. 마지막으로, 스택이 비어있는지 여부를 확인한 다음 스택이 비어있다면 1, 비어있지 않다면 0을 출력한다.

소스 코드


import java.util.Stack;

class Solution
{
    public int solution(String s)
    {
        Stack<Integer> stack = new Stack<>();
        int[] targetChars = s.chars()
                .map(i -> i - '0')
                .toArray();

        for (int ch : targetChars) {
            if (!stack.isEmpty() && stack.peek() == ch) {
                stack.pop();
                continue;
            }
            stack.add(ch);
        }

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

'알고리즘[Java] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 가장 큰 수  (0) 2022.01.30
[ Lv 2 ] 튜플  (0) 2022.01.29
[ Lv 3 ] [ DP ] 보행자 천국  (0) 2021.12.21
[ Lv 2 ] [ BackTracking ] 단체사진 찍기  (0) 2021.12.19

+ Recent posts