/*
- 문제 : Solution함수 구현하기
- 조건 :
1) Solution 함수는 true/ false 반환한다
2) 문자열 s를 매개변수로 한다
3) 문자열 s는 소괄호 여러개로 구성된다 (짝 안 맞을 수 있음)
4) 소괄호과 짝 맞으면 true/ 안 맞으면 false 반환한다
*/
문제 코드
#include <iostream>
#include <stack>
using namespace std;
bool solution(string s)
{
}
int main()
{
// 예시 코드
cout << solution("(())()") << endl; // 1
cout << solution("((())()") << endl; // 0
return 0;
}
정답코드
#include <iostream>
#include <stack>
#include <string>
using namespace std;
/*
- 문제 : Solution함수 구현하기
- 조건 :
1) Solution 함수는 true/ false 반환한다
2) 문자열 s를 매개변수로 한다
3) 문자열 s는 소괄호 여러개로 구성된다 (짝 안 맞을 수 있음)
4) 소괄호과 짝 맞으면 true/ 안 맞으면 false 반환한다
*/
bool solution(string s)
{
stack <char> St;
for (char c : s)
{
if (c == '(')
{
St.push(c);
}
else if (c == ')')
{
if (St.empty())
{
return false;
}
else
{
St.pop();
}
}
}
return St.empty();
}
int main()
{
// 예시 코드
cout << solution("(())()") << endl; // 1
cout << solution("((())()") << endl; // 0
return 0;
}
나의 코멘트
- 30분 시간 맞추고 스택으로 풀려고 시도했다. -> 혼자 못 풀었음
- 처음에는 string find함수 써야 하는 걸까 시도했다
- 범위기반 for문을 잘 못 써서 이것도 찾아봤다
- 답을 보고 ( 만 스택에 넣다 뺐다하는데 그 다음 데이터가 ) 일 때만 뺀다는 조건을 하면 해결된다는 걸 알았다
'알고리즘(C++)' 카테고리의 다른 글
배열 - 두개 뽑아서 더해서 정렬하기 (0) | 2025.01.30 |
---|---|
배열 - 배열제어하기 (0) | 2025.01.30 |
배열 - 배열정리하기 (0) | 2025.01.30 |
큐- 요세푸스 문제 (0) | 2025.01.28 |
스택 - 10진수를 2진수로 바꾸기 (0) | 2025.01.28 |