2-O 4949번 문제의 반례를 못찾겠습니다
341
작성한 질문수 1
- - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- - 먼저 유사한 질문이 있었는지 검색해보세요.
- - 서로 예의를 지키며 존중하는 문화를 만들어가요.
- - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
```
#include <bits/stdc++.h>
using namespace std;
bool check(string s) {
stack<char> stk;
bool flag;
for(char c: s) {
if(c == '(' || c == '[') stk.push(c);
else {
if(c == ')') {
if(!stk.size() || stk.top() != '(') {
flag = true;
break;
}
else stk.pop();
}
else if(c == ']') {
if(!stk.size() || stk.top() != '[') {
flag = true;
break;
}
else stk.pop();
}
}
}
if(stk.size() || flag) return false;
else return true;
}
int main() {
/*ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL); */
while(true) {
string s;
getline(cin, s);
if(s == ".") break;
if(check(s)) cout << "yes\n";
else cout << "no\n";
}
return 0;
}
```
위의 코드로 제출하면 20%에서 틀렸다고 뜹니다.
하지만 백준 질문검색에서 찾은 반례들을 넣어도 알맞게 출력해서 질문글 올립니다.
답변 1
1
안녕하세요. ㅎㅎ
먼저 굉장히 코드를 잘 짜셨네요. ㅎㅎ
but, 제가 교안에서 뭐라고 했죠?
지역변수로 선언을 하면 "쓰레기값"이 들어간다고 말씀을 드렸죠?
bool check(string s) {
stack<char> stk;
bool flag;
for(char c: s) {
이 코드에서 bool flag는 false가 아닌 true가 들어갈 수도 있기 때문에 틀렸다고 나타나게 됩니다.
쓰레기 값으로 인한 UB, Unexpected Behavior가 나타난 것이죠.
이러한 "반복해서" 로직을 하는 문제는 반드시 "초기화"를 잘해주셔야 해요.
감사합니다.
강사 큰돌 올림.
1-E질문입니다!
0
531
2
3-L 틀린 부분 피드백 부탁드립니다.
0
833
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
466
1
문제 풀 때 방향성에 대해
0
809
1
맥에서 vs code로 실행 관련 질문입니다
0
529
1
17071번 메모리 초과
0
389
1
1-C질문입니다!
0
427
2
2-B BFS 시간초과질문
0
637
2
1-O 13번 라인
0
445
1
6-J 놀이공원 문제 질문
0
387
1
구현관련 질문
0
488
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
539
1
1-K
0
481
2
3-G번 질문있습니다.
1
479
3
3-C 실행 시간 질문드립니다.
0
501
1
4-A 문제 풀이 질문있습니다.
0
599
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
345
1
3-O go 함수 질문 드립니다.
1
450
2
4-A 출력 질문
0
306
1
1주차 1-O 질문드립니다
0
263
1





