1874번 - 스택 수열
NO가 나오는 것 처리를 잘못한 걸까요? 시간이랑 메모리도 많이 쓸 것 같긴한데
% 뜨기도 전에 틀렸다고 떠버리니... 모르겠네요 ㅠ.ㅠ
반례가 있을까요? 부탁드립니다.
//반례
4
2
3
1
정답: ++-+--+-
--->
이런 수열을 만들어야 한다고 치면
il = [4, 3, 6, 8, 7, 5, 2, 1]
- 1단계
우선 il[0], 첫번째 수인 4는 넣자마자 바로 pop 해버리고,
다음으로 pop 가능한 것은 4보다 크거나 4보다 1 작아야(이 부분이 틀린 거였네요...) 한다고 생각했습니다
1) il[1]이 4보다 1 작은 경우 (3인 경우): 바로 pop
2) il[1]이 4보다 큰 경우 (5,6,7,8인 경우): 수가 들어갈 때까지 push하고 한번 pop
- 2단계
최고 높은 수인 8까지 나왔다면, 그 이후로는 계속 pop 해야 한다고 생각했습니다
이 과정에서 스택에 잘못 접근해서 runtime error가 발생한다거나,
pop 가능하지 않은 수가 다음에 나왔다면 NO를 출력하고
오류 없이 잘 동작이 되었다면 ++--등 결과를 출력합니다
---> 예외처리 부분 수정하고 다른 분 반례 넣어봤는데도 잘 나오는거같은데 ㅠㅠ
또 틀렸다고 나오네요... 어디서 틀린 걸까요...
이번에는 3%에서 틀렸다고 떠버리네요
댓글을 작성하려면 로그인해야 합니다.
bonjenny 1년 전
NO가 나오는 것 처리를 잘못한 걸까요? 시간이랑 메모리도 많이 쓸 것 같긴한데
% 뜨기도 전에 틀렸다고 떠버리니... 모르겠네요 ㅠ.ㅠ
반례가 있을까요? 부탁드립니다.
//반례
4
2
3
1
4
정답: ++-+--+-
--->
이런 수열을 만들어야 한다고 치면
il = [4, 3, 6, 8, 7, 5, 2, 1]
- 1단계
우선 il[0], 첫번째 수인 4는 넣자마자 바로 pop 해버리고,
다음으로 pop 가능한 것은 4보다 크거나 4보다 1 작아야(이 부분이 틀린 거였네요...) 한다고 생각했습니다
1) il[1]이 4보다 1 작은 경우 (3인 경우): 바로 pop
2) il[1]이 4보다 큰 경우 (5,6,7,8인 경우): 수가 들어갈 때까지 push하고 한번 pop
- 2단계
최고 높은 수인 8까지 나왔다면, 그 이후로는 계속 pop 해야 한다고 생각했습니다
이 과정에서 스택에 잘못 접근해서 runtime error가 발생한다거나,
pop 가능하지 않은 수가 다음에 나왔다면 NO를 출력하고
오류 없이 잘 동작이 되었다면 ++--등 결과를 출력합니다
---> 예외처리 부분 수정하고 다른 분 반례 넣어봤는데도 잘 나오는거같은데 ㅠㅠ
또 틀렸다고 나오네요... 어디서 틀린 걸까요...
이번에는 3%에서 틀렸다고 떠버리네요