접근방법은 맞는 것 같은데
for (int temp = stack[top--]; temp > stack[top]&&top != -1;top--);
에서 무한루프를 도는 것 같네요.
2493번 - 탑
접근방법은 맞는 것 같은데
for (int temp = stack[top--]; temp > stack[top]&&top != -1;top--);
에서 무한루프를 도는 것 같네요.
음 게시판에 코드를 복사하실 때 잘못 복사하신게 아니라면 예제 입력에서도 무한루프가 나옵니다.
아하 scanf("%d ") 때문에 손으로 입력했을 때는 무한루프를 도는 것 처럼 보였네요.
안에 있는 한 줄 짜리 포문이 스택의 맨 위의 입력이 방금 들어온 숫자보다 작아질 때까지 pop하는 것 맞나요?
음 그렇게 되면 top = i; 에 의해 stack의 유효 크기가 너무 커질 것 같습니다.
499999번째 수를 본다면, stack의 499999위치에 현재의 숫자가 들어가게 되고, 499999번 아래로 내려가야 합니다.
그런데 사실 스택에 실제로 있는 수는 그보다 훨씬 작겠죠.
스택의 크기와 현재 입력의 위치를 개별적으로 사용하시면 될 것 같네요.
댓글을 작성하려면 로그인해야 합니다.
dearsanta 8년 전 2
현재 시간초과 뜨네요.
스택으로 O(n) 을 만들 수 있다고 하던데 저는 스택을 사용해도 O(n^2) 가 최대인 것 같습니다.
어디서 줄여야 할지 잘모르겠습니다.
도와주세요!