본문 바로가기
코테

[java] 짝지어 제거하기

by 상똥 2024. 1. 11.
풀이
1. 스택을 생성한다
- 단어를 하나씩 넣어주기 위해
2. 인덱스를 생성한다
- 단어를 하나씩 훑어보기 위해서
3. while문을 사용해서 단어를 하나씩 훑어본다
- 만약 스택이 비어있으면 단어를 push한 후 index++, continue
- 위의 과정을 거치지 않으면 peek값을 뽑으려 하기 때문에 컴파일 에러
- 스택의 가장 위의 값(직전 단어)과 현재 단어가 일치하면 pop후 index++
- 둘 다 해당되지 않는다면 push후 index++
4. while문을 빠져나왔을 때, 스택이 비어있으면 단어가 모두 삭제된 것으로 return 1, 아니면 return 0
회고
.
코드 (접은 글)
더보기
import java.util.*;

class Solution
{
    public int solution(String s)
    {
        Stack<Character> stack = new Stack<>();
        
        int index = 0;
        while(index < s.length()) {
            if(stack.isEmpty()){
                stack.push(s.charAt(index));
                index++;
                continue;
            }
            if(stack.peek() == s.charAt(index)){
                stack.pop();
                index++;
                continue;
            }
            stack.push(s.charAt(index));
            index++;
        }
        if (stack.isEmpty()){
            return 1;
        }

        return 0;
    }
}