강의로 돌아가기
김영규

signal: segmentation fault (core dumped) 에러가 발생하는 이유가 뭐죠..?(C++)

아래내용처럼 코드를 짰는데 계속 signal: segmentation fault (core dumped) 에러가 발생하네요...
딱히 배열쓴것도 아닌데 에러날 이유를 못찾겠네요..
조언 부탁드립니다!

include

include

include

using namespace std;

int solution(vector> board, vector moves) {
int answer = 0;
stack s;

for(int i=0; i<moves.size(); i++){
    int cols = moves[i] - 1;
    for(int j=0; j<board.size(); j++){
        if(board[j][cols] != 0){
            //인형 존재 -> 해당인형을 뽑는다
            //스택이 비어있지 않고, 스택의 탑이랑 새로들어갈 인형이랑 같으면
            if(board[j][cols] == s.top() && !s.empty()){
                //새로운인형은 안넣고, top은 빼버린다
                s.pop();
                answer += 2;
            }else{
                s.push(board[j][cols]);
            }
            board[j][cols] = 0;
            break;
        }
    }
}

return answer;

}

1 개의 답변
287140

if(board[j][cols] == s.top() && !s.empty())
'&&' 연산자를 쓰시면 앞 조건과 뒷조건을 순서대로 체크 합니다. 이렇게 조건을 주시면 s.top()을 s.empty()보다 먼저 체크 하기 때문에 문제가 됩니다.
if( !s.empty() && board[j][cols] == s.top())
이렇게 바꾸시면 됩니다.

  • 김영규

    감사합니다!!

    김영규―2021.03.10 14:02
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.