[짝지어 제거하기]
https://programmers.co.kr/learn/courses/30/lessons/12973?language=java
* 로직
- 스택 자료구조를 활용한다
- 스택에 첫 글자를 넣어준다
- 입력 S의 다음 글자부터 하나씩 비교한다
- 만약 스택이 비어있다면 -> 해당 글자를 스택에 넣어준다
- 비어있지 않고
- 두 문자가 같다면 -> 스택에 있던 값을 POP
- 문자가 같지 않다면 -> 해당 글자를 스택에 넣어준다
import java.util.Stack;
class Solution
{
public int solution(String s){
int answer = 0;
Stack<String> stack = new Stack<>();
stack.push(s.substring(0, 1));
for(int i=1; i<s.length(); ++i) {
// 스택이 비어있지 않다면
if(!stack.isEmpty()) {
// 두 문자가 같다면
if(stack.peek().equals(s.substring(i, i+1))) {
stack.pop();
}
// 같지 않다면
else stack.push(s.substring(i, i+1));
}
// 비어있다면 -> 추가
else stack.push(s.substring(i, i+1));
}
if(stack.isEmpty()) answer=1;
else answer=0;
return answer;
}
}
'Algorithm > Problem_프로그래머스' 카테고리의 다른 글
프로그래머스(실패율) - Java (0) | 2020.05.11 |
---|---|
알고리즘(예상 대진표, [1차] 뉴스 클러스터링) - Java (0) | 2020.05.11 |
2019 카카오 개발자 겨울 인턴십(징검다리 건너기) - Java (0) | 2020.05.06 |
2019 카카오 개발자 겨울 인턴십(불량 사용자) - Java (0) | 2020.05.06 |
알고리즘(JadenCase 문자열 만들기, N개의 최소공배수) - Java (0) | 2020.05.05 |