문제 풀이/Programmers
[프로그래머스] 짝지어 제거하기 (JAVA)
Blackvill
2022. 3. 23. 10:45
문제 출처 - Programmers
문제는 여기
코딩테스트 연습 - 짝지어 제거하기
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙
programmers.co.kr
[풀이]
1. 주어진 문자열을 한 글자씩 잘라서 탐색을 한다.
2. 스택이 비어있지 않고 스택의 peek()이 현재 글자와 같다면 스택을 pop()해주고 아니라면 현재 글자를 push()해준다.
3. 모든 글자에 대해 다 진행하고 스택이 비었다면 1을 출력하고 아니라면 0을 출력한다.
[접근]
1. 스택을 사용하는 가장 기본적인 문제라고 생각하였다.
2. 한 글자씩 잘라 스택과 비교하며 체크해나가면 되겠다고 생각하였다.
[코드]
import java.util.*;
class Solution
{
public int solution(String s)
{
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// 스택이 비어있지 않고
// 스택의 맨 위가 일치하면
if (!stack.isEmpty() && stack.peek() == c)
stack.pop(); // 제거
else // 아니면
stack.push(c); // 추가
}
// 스택이 비어있으면 1 출력 아니면 0출력
return stack.isEmpty() ? 1 : 0;
}
}