제가 아직 반례 만들 정도로 똑똑하지 않아서, 속시원한 답이 될지는 모르겠지만, 한번 적어봅니다!
메모리를 초기화하고 close값을 찾을 때 가장 안쪽에 있는 닫는 괄호를 찾게 되는데 논리적으로 이런 문제가 있을 것 같습니다.
루프가 5천만번이 애매한 위치에서 끝났을 때 잘못된 괄호를 구하게 됩니다.
[(실제 무한루프 시작)..............[............(5천만번째 끝)..........](가장 작은 닫는 괄호, 이걸 답으로 할듯)................](실제 무한루프 끝..)
--> 그래서 5천만번 더 돌릴 때는 오히려 닫는 괄호의 가장 큰 인덱스를 찾으면 되지 않을까 싶습니다!! 어차피 무한루프에 걸려있으니 5천만번 이내에 갈 수 있는 최대한의 닫는 괄호가 최종 루프일 것 같습니다.
GCPC 들어가서 찾은 도움이 될지 모르는 반례인데 한번 참고해보세요.
input:
20 257 1
+[>>>>>>>++++++>>>+>>>>+[-<<<<>+<[-<<<<<<<<+<[>>>>>>>>>>>>+<<<<<<<<<<<-]>[->>>>>>>>+<<<<<<<]<<->>>>>>>>>>-]>[->]<<>+<[-<<<<<+<[>>>>>>>>>+<<<<<<<<-]>[->>>>>+<<<<]<<->>>>>>>-]>[->]<<>+<[-<<+<[>>>>>>+<<<<<-]>[->>+<]<<->>>>-]>[->]<<+>>>[[-]>+<]>]<<<<<<<<<<<<<<]
a
output:
Loop 1 256
howcatchem 2년 전
방문한 괄호 중 가장 오른쪽에 있는 값을 구했다가, 바깥쪽 루프를 돌다가 안쪽에서 무한 루프에 갇히는 경우가 있을 수 있다고 해서 5000만번을 넘어가면 메모리를 0으로 초기화하고 다시 5천만번, 즉 1억번을 돌려서 닫는 괄호의 인덱스 값을 구했습니다
예제와 질문 게시판에 있는 input들도 전부 맞았는데 어디가 틀렸는지 모르겠습니다 도와주세요ㅜㅜ