728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정말정말 오랜만에 푸는 알고리즘 문제...
연속으로 같은 문자가 나오면 제거해주고 앞 뒤를 이어 붙여서 다시 체크한다.
ABBAAA 면 true,
ABBBAA 면 false가 나온다.
문자열이 홀수개라면 구성과 관계없이 false.
보자마자 Stack을 이용해야 한다는 것을 알았지만 너무 오랜만이라 구현이 오래걸렸다 ㅜ
풀이
#include <bits/stdc++.h>
using namespace std;
int solution(string s)
{
bool answer = false;
stack <char> stk;
// 전체 문자열의 길이가 짝수일 때만 비교해준다.
if(s.length() % 2 == 0){
for(int i = 0; i < s.length(); i++){
// 스택 사이즈가 1 이상일 때부터 비교할 것임
if(stk.size() > 0){
// 두 개가 같다면 지워주기
if(stk.top() == s[i]){
stk.pop();
}
// 같지 않다면 그냥 넣어주기
else{
stk.push(s[i]);
}
}
// 스택에 아무것도 없다면 비교할 게 없으니 그냥 push
else{
stk.push(s[i]);
}
}
// 최종적으로 길이가 0이 되면 성공!
if(stk.size() == 0){
answer = true;
}
}
return answer;
}
728x90
반응형
'Algorithm' 카테고리의 다른 글
[BOJ/CPP] 고양이 카페 - 28353번 / C++ 풀이 (1) | 2023.10.30 |
---|---|
[BOJ/백준] 로봇 청소기 - 14503번 / C++,CPP 풀이 (1) | 2023.10.09 |
[BOJ/CPP] 부분합 - 1806번 / C++ 풀이 (0) | 2023.05.26 |
[BOJ/CPP] 빈도 정렬 - 2910번 / C++풀이 (0) | 2023.05.12 |
[BOJ/CPP] 동일한 단어 그룹화하기 - 16499번 [C++풀이] (0) | 2023.05.03 |