알고리즘

[JS] 프로그래머스_ 짝지어 제거하기

햄❤️ 2021. 7. 25. 23:48
반응형

문제링크

 

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

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

programmers.co.kr

 

 


 

  • stack 이라는 빈 배열을 만들어주고, stack 배열이 비어있지 않았다면, 배열의 마지막 요소와, 현재 요소가 같은지 비교한다.
  • 같을 경우, stack 배열에 있던 요소를 빼주고, 같지 않다면 stack에 추가한다.
  • stack이 비어있으면(처음 혹은, 앞의 같은 두 수가 제거되었을 경우) stack에 새 요소를 추가해준다.
  • 최종적으로 배열에 아무것도 없으면 짝지어서 잘 빠져나간 것이므로 짝지어 제거하기가 성공 = 1 
  • 아니라면 0 출력 

 

function solution(s) {
	let answer = 0;
	let stack = [];
	for (let x of s) {
		if (stack.length !== 0) {
			if (stack[stack.length - 1] === x) stack.pop();
			else {
				stack.push(x);
			}
		} else stack.push(x);
	}
	if (stack.length === 0) return 1;
	return answer;
}

let s = "baabaa";
console.log(solution(s)); // 1 출력

 

728x90
반응형