728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12973
728x90
메모리: 63 MB, 시간: 62.68 ms
사용 알고리즘: 자료구조, 스택
문자열의 문자들을 하나씩 스택에 넣는다.
만약 스택의 바로 위에 있는 문자가 현재 스택에 넣으려는 문자와 같다면, 알파벳이 2개 붙어있는 짝을 찾은 것이므로 pop
을 통해 짝지어 제거하기를 해준다.
그게 아니라면 해당 문자를 push
해준다.
import java.util.*;
class Solution
{
public int solution(String s)
{
char[] arr = s.toCharArray();
// 문자를 하나씩 확인하며, 스택의 맨 위에 같은 문자가 있으면 pop, 아니라면 push
Stack<Character> stack = new Stack<>();
for(int i = 0; i < arr.length; i++) {
if(stack.isEmpty() || stack.peek() != arr[i]) stack.push(arr[i]);
else stack.pop();
}
int answer = 0;
if(stack.size() == 0) answer = 1; // 스택이 비어있다면 짝지어 제거하기가 성공한 것
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 17685] [3차] 자동완성 (java) (0) | 2024.08.11 |
---|---|
[프로그래머스, 12938] 최고의 집합 (java) (0) | 2024.08.11 |
[프로그래머스, 12934] 정수 제곱근 판별 (java) (0) | 2024.08.10 |
[프로그래머스, 12929] 올바른 괄호의 갯수 (java) (0) | 2024.08.09 |
[프로그래머스, 12987] 숫자 게임 (java) (0) | 2024.08.09 |