728x90

짝지어 제거하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

스택을 이용하여 상단에 같은 짝이 오면 지우는 문제

2019 카카오 겨울 인턴쉽 1번 문제의 기본이라고 생각할 수 있겠다. => Link

 

[2019 kakao winter internship] 01. 크레인 인형뽑기 게임 (cpp/python)

크레인 인형뽑기 게임 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

wonillism.tistory.com

문제 풀이

소스코드 : C++

  1. stack 을 의미하는 vector를 선언하고 문자열을 탐색한다.
  2. stack이 비어있지 않고 top에 있는 값과 문자(c)의 값이 같으면 제거해준다.
  3. 그렇지 않다면 stack에 쌓아준다.
  4. 모든 문자를 탐색하고 벡터가 비어있으면 1을, 그렇지 않으면 0을 반환한다.
#include <iostream>
#include<string>
#include<vector>
using namespace std;

int solution(string s){
    vector<int> v;
    for(auto c : s){
        if(!v.empty()&&v.back() == c)v.pop_back();
        else v.push_back(c);
    }
    return v.size()==0?1:0;
}

소스코드 : Python

def solution(s):
    answer = 0
    stack = []
    for c in s:
        if len(stack):
            if len(stack) and stack[-1]==c:
                stack.pop()
            else: stack.append(c)
    answer = 0 if len(stack) else 1

    return answer
728x90
300x250
WONILLISM