Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 다이나믹프로그래밍
- 백준
- 백트래킹
- Set
- DFS
- map
- BFS
- 분할정복
- C++
- 알고리즘
- 정렬
- 깊이우선탐색
- 이분탐색
- stoi
- 최소공배수
- N과M
- int
- 프로그래머스
- DP
- 티스토리챌린지
- 오블완
- vector
- 유클리드호제법
- 배열
- 우선순위큐
- priority_queue
- 문자열
- Sort
- 그래프
- 에라토스테네스의 체
Archives
- Today
- Total
안녕 세상아,
[프로그래머스/c++] Lv2 올바른 괄호 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. stack 하나 만듬
2. for문 돌리면서 s[i]가 '(' 일 때, ')' 일 때 나눠서 생각하기
3. 만약 s[i]가 '(' 라면 stack에 push
4. 만약 ')'라면 두가지 경우로 나눠서 생각하기
4-1. stack이 비어있거나 stack.top()이 ')' 일 때는 answer값을 false로 하고 끝낸다.
4-2. 위의 경우가 아니면 맨 위의 값을 삭제
5. 만약 stack이 비어있지 않으면 answer을 false로 하고 끝
#include<string>
#include <iostream>
#include <stack>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> stk;
for(int i=0; i<s.size(); i++){
if(s[i] == '('){
stk.push(s[i]);
}
else if(s[i] == ')'){
if(stk.empty() || stk.top() == ')'){
answer = false;
break;
}
stk.pop();
}
}
if(!stk.empty())
answer = false;
return answer;
}
stack을 써야할지 queue를 사용해야할지 헷갈렸다..
'프로그래머스' 카테고리의 다른 글
[프로그래머스/c++] Lv1 최대공약수와 최소공배수 (0) | 2024.08.15 |
---|---|
[프로그래머스/c++] Lv2 최솟값 만들기 (0) | 2024.08.14 |
[프로그래머스/c++] Lv1 직사각형 별찍기 (0) | 2024.08.05 |
[프로그래머스/c++] Lv2 최댓값과 최솟값 (0) | 2024.08.05 |
[프로그래머스/c++] Lv1 행렬의 덧셈 (0) | 2024.08.05 |