반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12916
코딩테스트 연습 - 문자열 내 p와 y의 개수
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를
programmers.co.kr
<코드>
설명은 주석을 통해 대체한다.
방식이 푸시다운 오토마타에서 L = a^nb^n을 인식하는 방식과 똑같다
//p 또는 P 이면 stack에 push
//y가 나왔는데, stack의 top이 p 또는 P이면 pop
//y가 나왔는데, stack이 비어있으면 stack에 push
//p가 나왔는데, stack의 top이 y 또는 Y이면 pop
#include <string>
#include <iostream>
#include <stack>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> st;
for(int i=0; i<s.size(); i++){
if(s[i] == 'p' || s[i] == 'P'){
if(st.empty() || st.top() == 'p' || st.top() == 'P'){
st.push(s[i]);
}
else{
st.pop();
}
}
else if(s[i] == 'y' || s[i] == 'Y'){
if(st.empty() || st.top() == 'y' || st.top() == 'Y'){
st.push(s[i]);
}
else{
st.pop();
}
}
}
if(!st.empty()) answer=false;
return answer;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 같은 숫자는 싫어 / C++ (0) | 2021.07.21 |
---|---|
프로그래머스 - 이상한 문자 만들기 / C++ (0) | 2021.07.07 |
프로그래머스 - 기능 개발 / C++ (0) | 2021.05.23 |
프로그래머스 - 2016년 / C++ (0) | 2021.04.16 |
프로그래머스 - 체육복 / C++ (0) | 2021.03.24 |