프로그래머스 짝지어 제거하기
이 문제를 처음 시도할 때는
for 문으로 순회하며 같은 알파벳이 있는 경우 (현재 인덱스, 다음 인덱스) 를 넘어가고 다음 알파벳을 체크 하였다.
로직을 수행할 때는 다음 순서를 따른다.
1) 현재 알파벳과 다음 알파벳을 비교
2) 새로 만든 문자열을 가지고 1번을 수행
TC는 통과했지만, 결국 시간 초과 가 났다.
그러면 어떻게 푸는것이 효과적일까? 정답은 Stack
은근 간단하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = -1;
char[] chas = s.toCharArray();
Stack<Character> st = new Stack<>();
for(int i=0; i<chas.length; i++){
if(!st.isEmpty() && st.peek()==chas[i]){
st.pop();
}else{
st.push(chas[i]);
}
}
if(st.size()!=0)
return 0;
else
return 1;
}
}
|
cs |
'알고리즘' 카테고리의 다른 글
BOJ_1781_컵라면 (0) | 2021.05.23 |
---|---|
프로그래머스 행렬 테두리 회전하기 (0) | 2021.05.21 |
프로그래머스 2개 이하로 다른 비트 (0) | 2021.05.20 |
완주하지못한선수 / k번째 수 (0) | 2021.05.08 |
알고리즘 :: 신규 아이디 추천 (javascript) (0) | 2021.05.07 |
댓글
이 글 공유하기
다른 글
-
BOJ_1781_컵라면
BOJ_1781_컵라면
2021.05.23 -
프로그래머스 행렬 테두리 회전하기
프로그래머스 행렬 테두리 회전하기
2021.05.21 -
프로그래머스 2개 이하로 다른 비트
프로그래머스 2개 이하로 다른 비트
2021.05.20 -
완주하지못한선수 / k번째 수
완주하지못한선수 / k번째 수
2021.05.08