https://school.programmers.co.kr/learn/courses/30/lessons/12973
풀이
문자열의 길이가 백만이길래 고민을 좀 하고 들어갔다.
1. stack을 이용해서 맨 첫 문자를 넣어 둔 뒤, 인덱스 1부터 문자열 길이를 다 탐색
2. stack에 들어가 있는 문자와 문자열의 다음 문자와 비교
2-1. 같다면 스택에 있는 문자를 POP
2-2. 다르다면 스택에 해당 문자를 추가한다.
처음 코드
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = -1;
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for(int i=1; i<s.length(); i++){
if(stack.peek()!=s.charAt(i)) stack.push(s.charAt(i));
else stack.pop();
}
answer = stack.isEmpty() ? 1 : 0;
return answer;
}
}
스택에 아무것도 없을 때, peek() 메소드 사용으로 예외가 발생했다.
그래서 빈 스택일 때의 예외 처리를 추가한 코드가 아래의 코드
전체 코드
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = -1;
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for(int i=1; i<s.length(); i++){
if(stack.isEmpty()) stack.push(s.charAt(i));
else if(stack.peek() != s.charAt(i)) stack.push(s.charAt(i));
else stack.pop();
}
answer = stack.isEmpty() ? 1 : 0;
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 수식 최대화(Java/자바) || 2020카카오인턴십 - dfs, 순열 (0) | 2023.11.17 |
---|---|
[프로그래머스] 영어 끝말잇기 (Java/자바) (0) | 2023.10.14 |
[프로그래머스] 최소 직사각형 (Java/자바) || 코딩테스트 연습(완전탐색) (0) | 2023.10.14 |
[프로그래머스] 구멍보트 (JAVA/자바) (0) | 2023.09.26 |
[프로그래머스] 연속 부분 수열 합의 개수 (JAVA/자바) (0) | 2023.08.29 |