-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
2-O 질문있습니다
24.05.25 17:04 작성 조회수 51
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님. 제 코드가 "틀렸습니다"로 뜨는 이유를 모르겠습니다..... http://boj.kr/d1dcc4d3cd2645619e493eab43591718 감사합니다:)
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님. 제 코드가 "틀렸습니다"로 뜨는 이유를 모르겠습니다..... http://boj.kr/d1dcc4d3cd2645619e493eab43591718 감사합니다:)
답변을 작성해보세요.
0
큰돌
지식공유자2024.05.27
안녕하세요 yjs님 ㅎㅎ
전체적인 로직은 잘 짜셨는데 일부 반례를 해결하지 못하는 것 같아요 ㅎㅎ
먼저 반례는 다음과 같습니다.
[)].
yjs 님 : yes
답: no
그리고 제가 yjs님 코드를 좀 다듬어 봤는데요.
이렇게 하시면 됩니다.
#include <iostream>
#include <stack>
using namespace std;
int main() {
while (true) {
string s;
stack<char> st;
getline(cin, s);
if (s == ".") break;
bool isBalanced = true;
for (int i = 0; i < s.size(); i++) {
if (s[i] != '(' && s[i] != ')' && s[i] != '[' && s[i] != ']') continue;
if (s[i] == '(' || s[i] == '[') {
st.push(s[i]);
} else if (s[i] == ')' || s[i] == ']') {
if (st.empty()) {
isBalanced = false;
break;
}
if ((s[i] == ')' && st.top() == '(') || (s[i] == ']' && st.top() == '[')) {
st.pop();
} else {
break;
}
}
}
if (!st.empty()) isBalanced = false;
if (isBalanced) {
cout << "yes" << "\n";
} else {
cout << "no" << "\n";
}
}
return 0;
}
isBalanced를 추가하면서 일부로직을 다듬었습니다.
참고부탁드립니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
답변 1