목차
문제 이름 및 링크
짝지어 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/12973
출제 사이트
프로그래머스
문제유형 및 난이도
문제유형: 스택
난이도: Level2
코드 설명
문제를 보고 한 번의 순회에 끝내야 시간복잡도 내에 결과를 낼 수 있겠다 생각하였습니다.
고민해보니 애니팡 게임 처럼 같은걸 만나자마자 팡하고 터져서 없어지게하면 되지 않을까라는 생각을 했습니다.
스택을 이용하면 해당 아이디어가 구현되겠다라는 생각을 하게 되었습니다.
만약 스택이 비어 있으면 문자를 넣고 스택에 값이 있다면 제일 위의 값이 넣으려는 문자와 같은지 확인한 다음 같다면 삭제하는 알고리즘을 생각했습니다.

그 결과 나온 코드는 아래와 같습니다.
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.size()==0) stack.push(c);
else {
if(stack.peek()==c) stack.pop();
else stack.push(c);
}
}
return stack.size()==0 ? 1:0;
}
}
한 번에 정확도와 효율성 검사 모두 통과하는 건 너무 기분이 좋습니다.
'알고리즘 > 코딩테스트 준비' 카테고리의 다른 글
| 마지막 두 원소 - 쉬운 문제라도 읽기 편한 코딩을 하자 (0) | 2023.08.21 |
|---|---|
| 공백으로 구분하기2 - 문자열 문제는 쓰는 기능만 쓰게 되는 것 같다. trim과 정규화의 활용성 (0) | 2023.08.17 |
| 카펫 - 수학적으로 풀었다고 생각한 풀이와 진짜 수학적 풀이 (0) | 2023.08.16 |
| 다음 큰 숫자 - Integer.bitCount()의 발견 (0) | 2023.08.14 |
| 코딩테스트 기록을 블로그에 남기려고 합니다. (0) | 2023.08.14 |
