문제 출처 - 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;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 체육복 (JAVA) (0) | 2022.03.27 |
---|---|
[프로그래머스] 모의고사 (JAVA) (0) | 2022.03.25 |
[프로그래머스] 기능개발 (JAVA) (0) | 2022.03.22 |
[프로그래머스] 로또의 최고 순위와 최저 순위 (JAVA) (0) | 2022.03.21 |
[프로그래머스] [1차] 뉴스 클러스터링 (JAVA) (0) | 2022.03.18 |