2023. 10. 26. 09:55, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12909
#include <bits/stdc++.h>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char> st;
for(auto c: s){
if(c=='(') st.push(c);
else {
if(st.empty()) {
answer=false;
return answer;
}
else st.pop();
}
}
if(!st.empty()) answer=false;
return answer;
}
중요한 처리를 하는 과정을 ')' 일때로 두어서 코드를 작성하였다.
위의 코드의 경우는 stack을 이용해서 작성하였는데, 결국 이 경우 모든 처리를 했을때 stack이 비어있어야 제대로 된 형태의
괄호형태 라는것을 이용한 풀이이고, 다른 사람의 풀이를 보니까 결국 가장 중요한, 맨 마지막에 다 비어야 한다는 것을 이용한 다른 형태의 풀이가 있어서 첨부해본다.
#include<string>
#include <iostream>
using namespace std;
bool solution(string s)
{
int n = 0;
for (int i = 0; i < s.length(); i++) {
if (n < 0)
return false;
if (s[i] == '(')
n++;
else if (s[i] == ')')
n--;
}
return n == 0;
}
위 풀이의 경우는 카운트 해주는 변수 n을 선언해서, 들어오는 '(' 에 따라서 n++을, 그리고 ')'에 따라서 n--을 해주는데,
그때에 맨 마지막에 숫자가 0인지 아닌지에 따라서 true false를 리턴하게 해주는 형태의 코드이다.
이 코드도 중간에 잘못된 형태라면 뒤는 더 보지않고 바로 끝내버리는 형태이다.
결국 내가 작성한 코드와 같은 논리를 이용해서 문제를 해결하는데, stack을 쓰지않고 카운트 변수를 이용해서 조금 더 간결하게 작성한듯 하다. 멋진 풀이이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv 2. 42587 c++ 프로세스 (0) | 2023.10.28 |
---|---|
프로그래머스 Lv 2. 42586 c++ 기능개발 (시간 초과에 빠지는 경우 참고 사항) **추가학습 필요** (0) | 2023.10.26 |
프로그래머스 Lv 1. 12906 c++ 같은 숫자는 싫어요 (0) | 2023.10.25 |
프로그래머스 Lv 2. c++ 18118 요격시스템 (0) | 2023.10.25 |
코딩테스트 입문 Lv 0 100문제 해결 완료. (0) | 2023.10.12 |
Comments, Trackbacks