해결된 질문
작성
·
58
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 선생님 제가 풀이한건데 문제에 예시 입력을 했을 때 맞게 나오고 다르게 해봤는데 맞게 나왔는데 어떤 부분 때문에 틀렸는지 도저히 몰라 질문 남깁니다. 어떤 반례가 있길래 이럴까요??
#include<bits/stdc++.h>
using namespace std;
string s;
int n,cnt,ret =-987654321,start;
stack<char>st;
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
cin >> n >> s;
for(char c : s){
if(st.size() && st.top() == '(' && c == ')'){
cnt += 2;
st.pop();
}else if(st.size() && st.top() == ')' && c == '('){
while (!st.empty()) st.pop();
st.push(c);
cnt = 0;
}else{
st.push(c);
}
ret = max(ret, cnt);
}
cout << cnt << "\n";
return 0;
}
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 안창완님.
질문해주신 코드와 관련하여 어떤 부분에서 문제가 될 수 있는지 검토해보았습니다. 괄호 관리를 위한 스택을 사용하는 방식은 좋은 접근이지만, 코드에서 예외적으로 처리해야 할 일부 경우가 누락되었을 수 있습니다. 여기서 주의 깊게 살펴봐야 할 점은 괄호의 짝이 맞지 않거나 예외적인 경우들이 잘 처리되고 있는지입니다.
조건 로직 복잡성:
ret = max(ret, cnt);
에서 cnt의 초기화나 조건문을 미세하게 검토해 선순위 매칭을 올바르게 하고 있는지 확인해보세요.끊어진 경우 초기화:
( )
이외에 )
가 등장할 때 정확히 cnt 초기화를 원점으로 돌리고 있는지 점검해 보세요. 예를 들어 현 코드에서는 중간에 틈이 생겨 스택이 비어 있지 않은 경우까지 고려해야 합니다.예제 테스트 유도:
cout << ret << "\n";
라고 하셨는데, 실제 상에서는 cout << cnt << "\n";
부분도 확인하고 계십니다. 혼재되어 출력 값에 오류가 있을 수 있습니다.그 외, 관련된 유사한 질문들을 예로 제공드리니, 함께 검토해 보시길 권장드립니다:
이러한 답변들이 도움이 되기를 바랍니다. 문제가 해결되지 않거나 다른 궁금증이 있다면 언제든지 질문 남겨주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.