beth_shan   2년 전

안녕하세요. 코딩을 작성해보았습니다.

주어진 예제는 정상 출력이 됩니다.

하지만 결과는 틀렸습니다가 나옵니다..

제 지식으로는 틀린부분을 찾기가 어려워 도움을 구합니다.


뿐만 아니라, 컴파일은 되지만 29행에서 'ch에서 잘못된 데이터를 읽는 중입니다'라는 경고가 뜹니다.

저는 문제가 없다고 생각하는데, 어디서 비롯된 것인지

부족한 부분 조언해주시면 감사드리겠습니다:)

uuiip7878   2년 전

일단 char ch[1000001];는 전역으로 선언하시는 것을 추천드립니다. 지역 변수는 일정 이상의 메모리 할당을 감당할 수 없기 때문에 오류가 날 수 있습니다.

그리고 저렇게 코드를 짜시면 아래 반례가 생깁니다. 한번 참고하고 수정해보시기 바랍니다.

beth_shan   2년 전

uuiip7878

님 많은 조언 주신 것 감사합니다.

덕분에 코드 잘못된 부분 많이 알 수 있었습니다ㅠ 도움 너무 감사합니다.

여전히 제 코드에 문제가 있는지 80퍼센트정도에 틀렸습니다가 나오네요...ㅎ


혹시, 한가지만 더 여쭤봐도 될까요?

29행에 ch[j] 부분을 컴파일러에서 잘못된 데이터를 읽는 중이라는 경고가 나오는데 어떤 문제를 가지고 있는지 제 지식으로는 모르겠어서

질문을 드립니다.


늘 조언해주셔서 감사합니다!

uuiip7878   2년 전

gcc 컴파일러 기준 제 경우 빌드할 때 아무런 에러가 안 나는데.. 혹시 MSVC(비주얼 스튜디오 내장 컴파일러)를 사용 중이신가요?

uuiip7878   2년 전

방금 VS2019로도 빌드해봤는데 별 다른 에러가 안 나네요..

beth_shan   2년 전

아 그러시군요ㅠㅠ 저는 비쥬얼스튜디오 사용하고 있습니다. 여러 방면으로 확인해주셔서 감사합니다:)

에러코드는 c6385로 뜨는데,, 이것이 무엇이 문제일 때 발생하는지 글을 읽어봐도 이해를 하기 어렵더라구요,,,

uuiip7878

님이 도와주신 덕에 방금 문제는 제출해서 해결되었는데, 뭐랄까 제 코드가 너무 엉성하고 한부분 한부분 뜯어고쳐서 그런지 찝찝해서 거듭 질문드렸네요ㅎㅎㅎ

늘 큰 도움 주셔서 너무 감사드려요!!:)


uuiip7878   2년 전

VS2019에서 에러 나오는 거 확인했습니다.
'ch'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 '1000001'바이트인데 실제로는 '-1'바이트만 읽을 수 있습니다.

위 메시지는 사실 일단은 무시해도 될 것 같습니다. 실제로 읽을 수 있는 범위를 초과한다면 프로그램이 SIGSEGV, 세그멘테이션 폴트 신호를 보내게 되는데 그럼 어차피 백준에서 런타임 에러로 간주하고 결과에 그대로 띄울테니까요...

uuiip7878   2년 전

경고는 어디까지나 경고고 '초과할 수도 있을 것이다' 정도의 의미로만 받아주시면 될 것 같습니다.

beth_shan   2년 전

uuiip7878

아 그렇군요,,,


저는 지금까지 경고메세지도 오류라고 받아드리고 있었네요,,,

크,, 감사합니다!!

beth_shan   2년 전

uuiip7878님 늘 행복하세용:)!!

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