npole0103   3년 전

처음 벡터로 짰다가 벡터는 메모리 많이 잡아먹는다는 말을 듣고

string으로 다시 짰는데도 불구하고 메모리 초과가 뜨네요.

제 코드 동작 원리는 이렇습니다.

입력받은 str의 첫 글자와 bomb의 맨 뒷글자가 일치한다면

bomb.size - 2 루프에서 ( -2를 해주는 이유 : 이미 첫글자를 검사해서 -1, index이기 때문에 -1  )  bomb[j]와

일치하는지 순차적으로 검사합니다.

만약 일치하지 않는 문자가 나올 시 기존의 일치하지 않은 index를 pop한 만큼 다시 i로 가서 result에다가 str[i]를 넣어줍니다.

정답은 잘 나오는데 메모리 초과라고 뜹니다.

제가 아직 초보라 시간초과까지는 어떻게 해결해보겠는데 메모리 영역까진 도저히 해결할 수 없어서 이렇게 글 올립니다.

고수 님들 답변 기다리겠습니다.

seico75   3년 전

단순한 메모리 문제가 아니라 로직에 오류가 있는 것 같습니다.

bcdefghijklmn
abcdg

이와 같은 입력에서 끝나지가 않네요.

abcdef

abd 

의 경우는 답이 다르게 나오는 것 같습니다.

npole0103   3년 전

seico75님 반례 추가 감사합니다. 답이 정확히 나와서 확신했는데 이건 몰랐네요..

말씀해주신 논리적 오류는 나름(?) 수정하였고 메모리 초과 문제와 시간초과를 해결하기 위해 스택을 사용했습니다.

이번엔 말씀해주신 반례도 잘 들어맞고 예제 문제들도 잘 들어갑니다. 근데 체점하니 메모리/시간 초과도 아닌 틀렸다고 떠버리네요.

혹시 제 코드에 오류가 있을까요? 바쁘시겠지만 한번만 더 봐주시면 감사하겠습니다.


seico75   3년 전

다시 반례입니다.

abcdef
acdef

npole0103   3년 전

진심으로 감사합니다 덕분에 해결했습니다. 반대서부터 검사해서 역순으로 temp에 들어갈텐데.. 그걸 간과했네요 너무 정신없었나봅니다. 이런 기초적인 걸..

그리고 bbbbb / b 입력했을 때랑 bbbbb / bb 입력했을 때도 FRULA와 b 나오게끔 추가적으로 처리하니까 9트만에 성공했습니다.

계속 생각나서 방법 찾고 있었는데 덕분에 잘 해결했습니다 너무 감사드립니다. 복 받으실 겁니다!!

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