jyg0599   4년 전

예제를 통째로 복사붙여넣기하면 런타임 에러가 뜨는데

한 줄씩 입력하면 결과가 잘 나옵니다. 뭐가 문제인 건지 알려주시면 감사하겠습니다.

코드 로직은 이렇습니다.

1) n개만큼의 배열에 들어갈 수를 파싱하여 벡터에 입력

2) R_check 변수를 이용하여 R이 나올때마다 ++연산을 해주고

짝/ 홀인 경우로 나눠 iterator / reverse_iterator를 이용하여 벡터의 원소를 erase해줌

3) err_check 변수를 이용하여 error 체크 후

4) 조건에 맞춰 결과 출력

어디서 런타임 에러 나는지랑 반례가 혹시 있다면 알려주시면 감사하겠습니다!!

ckdgus2482   4년 전

이터레이터 조작하다가 댕글링 포인터 버그가 생기는 경우 같은데 잘 안보이네요

그거랑 별개로 자료구조 선택에 잘못된 판단을 한 것 같아서 조언을 드릴게요

벡터는 베이스 주소가 고정되어있어서 begin()에서 erase하면 나머지 요소들을 다 한칸씩 당겨와서 복사하게됩니다. 굉장히 비효율적이에요

벡터 대신 양방향에서 입출력을 O(1)에 할 수 있는 deque을 사용하세요

jyg0599   4년 전

아.. 덱 문제인건 알고 있었는데 구현하다보니 자주쓰는 벡터에 손이 가서 그렇게 구현해버렸네요

조언 감사합니다 ㅎㅎ 덱으로 한 번 구현해볼게요 ㅎㅎ

그래도 역시 뭐가 잘못된 건지는 좀 궁금하네요.. 예외 케이스도 다 처리한거 같은데 순차적으로 직접 입력하면서 하면

잘 동작하는데 예제를 통째로 복사해서 붙여넣으면 런타임에러가 뜹니다

ckdgus2482   4년 전

예제를 복붙해서 넣었을때 런타임에러가 뜬다면 데이터 입력 받는 부분이 잘못된건데 36번 라인에서 런타임 에러가 발생할 가능성이 높아보이네요

브레이크포인트 걸어두고 36번라인 실행하기 전에 arr_str이 정수타입으로 변환이 가능한 문자열이 들어가 있는지 확인해보시면 좋을 것 같습니다

댓글을 작성하려면 로그인해야 합니다.