1. 문제 설명
2. 나의 풀이
import java.util.Stack;
public int solution(String s)
{
s = s.replaceAll(" ", "");
Stack<Character> st = new Stack<>();
for(int i = 0; i < s.length(); i++)
{
if(i == 0 || st.empty())
{
st.push(s.charAt(i));
}
else
{
if(st.peek() == s.charAt(i))
{
st.pop();
}
else
{
st.push(s.charAt(i));
}
}
}
return st.isEmpty()? 1: 0;
}
풀고 뿌듯해서 박수쳤는데 생각해보니까 if(i == 0 || st.empty()) 는 그냥 st.empty 하나만 있어도 되는거였다.. i가 0이면 당연히 비어있을테니까
3. 다른 사람의 풀이
import java.util.*;
class Solution
{
public int solution(String s)
{
// 문자열을 캐릭터 배열로 변환
char[] c = s.toCharArray();
ArrayList<Character> list = new ArrayList<>();
// 캐릭터를 하나씩 리스트에 삽입
for(char _c : c){
Add(list, _c);
}
// 만약 리스트가 비었다면 짝지거 제거 완료
if(list.isEmpty()){
return 1;
}
else {
return 0;
}
}
// 리스트에 캐릭터 하나씩 삽입하는 함수
public static void Add(ArrayList _list, char _c){
_list.add(_c);
// 만약 리스트의 길이가 2보다 크고 && 마지막 두 원소가 같은 캐릭터라면
if(_list.size() > 1 && (_list.get(_list.size() - 2) == _list.get(_list.size() - 1))){
// 마지막 두 원소 제거
_list.remove(_list.size() - 1);
_list.remove(_list.size() - 1);
}
}
}
stack 없이 푸신 분의 풀이를 들고 왔다.
list에 하나씩 넣을때마다 원소를 제거할 지 검증할 수 있는 함수(Add)를 실행시켜준다.
'코테 > java' 카테고리의 다른 글
[프로그래머스](java) lv 1 2018 KAKAO BLIND RECRUITMENT 비밀지도 (1) | 2025.04.17 |
---|---|
[프로그래머스][java] lv 1 시저 암호 (0) | 2025.02.12 |
[프로그래머스][java] lv 1 최소직사각형 (1) | 2025.01.17 |
[프로그래머스][java] lv 1 월간 코드 챌린지 시즌1 3진법 뒤집기 (3) | 2025.01.15 |
[프로그래머스][java] lv1 이상한 문자 만들기 (0) | 2025.01.10 |