https://programmers.co.kr/learn/courses/30/lessons/12973
코딩테스트 연습 - 짝지어 제거하기
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙
programmers.co.kr
저는 해당 문제를 스택을 이용해 문제를 해결하였습니다.
스택을 통해 이전에 무슨 문자였는지를 확인하고 현재와 같다면 stack 에서 꺼내고 아니라면 stack에 넣었습니다.
저는 자바의 stack을 사용하지 않고 deque를 사용하였는데 이유는 stack은 vecter로 구현되어 있어 동기화작업을 하고 이로 인해 속도가 느린 것으로 알고 있습니다.
import java.util.*;
class Solution {
public int solution(String s){
int answer = check(s);
return answer;
}
private static final int SUCCESS = 1;
private static final int FAIL = 0;
private int check(String s){
int time = 0;
Deque<Character> stack = new LinkedList<>();
for(int i = 0 ; i < s.length() ; i++){
char now = s.charAt(i);
// System.out.println(now+" "+stack);
if(!stack.isEmpty() && stack.peekLast() == now){
stack.pollLast();
continue;
}
stack.add(now);
}
if(stack.isEmpty()){
return SUCCESS;
}
return FAIL;
}
}
'알고리즘' 카테고리의 다른 글
백준 16173번 점프왕 쩰리 (JAVA) (0) | 2022.06.08 |
---|---|
백준 2234번 성곽 (JAVA) (0) | 2022.06.06 |
프로그래머스 점프와 순간 이동 (JAVA) (0) | 2022.06.04 |
프로그래머스 스티커 모으기(2) (JAVA) (0) | 2022.06.03 |
프로그래머스 기지국 설치 (JAVA) (0) | 2022.06.02 |