728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12973
풀이
반복문 안에서 문자 하나하나 앞뒤를 비교해가면서 문제를 풀 수도 있지만 자료구조를 잘 활용하면 반복문으로 한번 더 안감싸고 더 쉽게 풀 수 있음 !!!
여기서 말한 자료구조는 Stack임 !
Stack을 이용하면 반복문을 여러번 돌 필요가 없이, Stack에 데이터를 넣을 때마다 비교를 통해서 문자열을 짝지어서 제거할지 안할지 정할 수 있음
코드를 보면 무슨 말인지 알 수 있을거임 !
코드
// 코딩테스트 연습 - 2017 팁스타운 - 짝지어 제거하기
// https://school.programmers.co.kr/learn/courses/30/lessons/12973
package PROGRAMMERS.level2;
import java.util.Stack;
public class Num12973_짝지어제거하기 {
public static class Solution {
public int solution(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char temp = s.charAt(i);
if (stack.isEmpty()) {
stack.push(temp);
} else {
if (stack.peek() == temp) {
stack.pop();
} else {
stack.push(temp);
}
}
}
if (stack.isEmpty()) {
return 1;
} else {
return 0;
}
}
}
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution("baabaa"));
System.out.println(s.solution("cdcd"));
}
}
728x90