하루에 한 문제

[프로그래머스 2017 팁스다타운] 짝지어 제거하기 -Java 본문

알고리즘/프로그래머스

[프로그래머스 2017 팁스다타운] 짝지어 제거하기 -Java

dkwjdi 2020. 12. 17. 16:54

https://programmers.co.kr/learn/courses/30/lessons/12973

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

import java.util.ArrayList;
import java.util.List; 
class Solution {
		public int solution(String s) {
			int answer = 0;
			
			List<Character> list = new ArrayList<>();
			int size=-1;
			
			for(int i=0; i<s.length(); i++) {
				if(size==-1) {
					list.add(s.charAt(i));
					size++;
					continue;
				}
				
				if(s.charAt(i)==list.get(size)) {
					list.remove(size);
					size--;
					continue;
				}
				else {
					list.add(s.charAt(i));
					size++;
				}
			}
			
			answer = list.size() < 1 ? 1 : 0;
			return answer;
		}
	}

소요시간 : 11분

 

로직을 살펴보면 

 

입력으로 주어지는 s를 처음부터 끝까지 돌면서 한개씩 list에 add합니다

 

만약 add를 할려고 하는데 list의 마지막에 들어있는 문자와 같은 문자라면 list의 마지막문자를 삭제합니다. 그리고 skip

 

만약 add를 할려고 하는데 list의 마지막에 들어있는 문자와 다른 문자라면 list에 삽입합니다!

 

그리고 마지막에 list의 사이즈를 보고 삭제가 전부 되었는지 삭제가 불가능한지 확인합니다!

 

지금 생각해보니 스택으로 풀었으면 더 쉽게 했을 것 같습니다

Comments