• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

1-M 백준 3986 질문 드립니다

24.03.14 19:10 작성 24.03.14 19:13 수정 조회수 81

0

안녕하세요 큰돌님:)

백준 3986 문제에 대해서 질문드리고 싶은 게 있습니다!

http://boj.kr/00e868dc6fea4a5cbcb0048b32aed50b

위의 코드와 같이 st.push(s[0]); 을 먼저 한 다음 j=1 부터 반복문을 시작하면 왜 21112 segmentation fault 오류가 나오는지 궁금합니다..ㅜㅜ

 

그리고 제가 1주차 문제를 풀고 있는데 거의 3개 중에 하나 꼴로 틀리고 어떨 땐 연속으로 계속 틀리는데

강의를 들으면 설명을 잘해주셔서 이해안되는 부분 없이 전부 이해가 가긴 합니다.. 접근법을 배우는 거에 의의를 두고 틀려도 계속 진도 나가면서 풀고있기는 한데 자꾸 틀리니까 위축이 되어서요..ㅠㅠ

지금처럼 꾸준히 진도 나가는 것이 맞을까요?? 제 수준에서는 다시 교안으로 돌아가야 하는지.. 모르겠습니다 조언해주시면 감사합니다..!

마지막으로 선생님께서 올려주신 추천문제들만 복습해서 봐도 코테 마스터 할 수 있을까요..? ㅜㅜ 아니면 다른 문제들도 함께 겸해서 공부해야하는지 궁금합니다

감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요 clain님 ㅎㅎ

그부분 때문에 해당 에러가 뜨는게 아닙니다.

 

image

#include <bits/stdc++.h>
using namespace std;
int n, cnt;
int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        stack<char> st;
        string s;
        cin >> s; 
        for (int j = 1; j < s.size(); j++) {
            if (st.top() == s[j]) st.pop();
            else st.push(s[j]);
        }
        if (st.empty()) cnt++;
    }
    cout << cnt << '\n';
    return 0;
}

런타임에러.

 

#include <bits/stdc++.h>
using namespace std;
int n, cnt;
int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        stack<char> st;
        string s;
        cin >> s;
        st.push(s[0]);
        for (int j = 1; j < s.size(); j++) {
            if (st.size() && st.top() == s[j]) st.pop();
            else st.push(s[j]);
        }
        if (st.empty()) cnt++;
    }
    cout << cnt << '\n';
    return 0;
}

맞는 코드.

이런식으로 항상 size를 체킹 -> top으로 드가셔야 합니다.

size체킹도 안했는데 바로 top에 접근하려고 하니 top이 없을 때 해당부분을 참조하게 되어서 그런 에러가 발생하는 것이죠.

 

그리고 제가 1주차 문제를 풀고 있는데 거의 3개 중에 하나 꼴로 틀리고 어떨 땐 연속으로 계속 틀리는데

강의를 들으면 설명을 잘해주셔서 이해안되는 부분 없이 전부 이해가 가긴 합니다.. 접근법을 배우는 거에 의의를 두고 틀려도 계속 진도 나가면서 풀고있기는 한데 자꾸 틀리니까 위축이 되어서요..ㅠㅠ

>> 문제풀이 -> 해설 -> 강의 -> 3, 7, 21일마다 반복해서 품.

이걸 해주세요. 원래 이렇게 틀리는 분들도 많습니다. 평타라고 보시면 되요. 위축되는 것은 이해합니다.

저도 예전에 처음 알고리즘 문제 풀 때 그랬거든요.. 당연한 감정이라고 생각하시고 아 당연하네~ 하면서 꾸준히만 해주세요 ㅎㅎ

지금처럼 꾸준히 진도 나가는 것이 맞을까요?? 제 수준에서는 다시 교안으로 돌아가야 하는지.. 모르겠습니다 조언해주시면 감사합니다..!

>> 교안으로 돌아가시면 안됩니다!!! 교안은 어느정도 숙지만 하시면 됩니다. 다 쳐보시긴했죠? 그정도면 됩니다 + 모르실 때는 한번 보는 정도.

마지막으로 선생님께서 올려주신 추천문제들만 복습해서 봐도 코테 마스터 할 수 있을까요..? ㅜㅜ 아니면 다른 문제들도 함께 겸해서 공부해야하는지 궁금합니다

>> 네 왠만한 코테는 다 합격할 수 있습니다. 제 해설문제들만 믿으세요. 히든퀘스트도 꼭 풀어주시구요. ㅎㅎ



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


Clain님의 프로필

Clain

질문자

2024.03.16

큰돌님 답변 감사합니다! 완전 이해 되었습니다ㅎㅎ

그 외의 답변도 정말 감사합니다..ㅜㅜ 큰 힘이 되었습니다 꼭 완강하겠습니다!

좋은 주말 보내세요 :)