yg04076   1년 전

테스트 예제 돌아가는 것도 둘이 똑같고 논리도 똑같은데... 뭐가 문제 일까요...?

그리고 제가 이상한 지점이라고 마킹한 지점....

if (st.size() != 0) {
  for (int i = 0; i <= st.size(); i++) { 
     sum += st.top();
     st.pop();
   }
}

제가 초반에 쓴 풀인데... 이상하게 for문이 st.size()만큼 돌면 정답이 나와야 하는데, 이상하게 st.size()-1만큼만 돌더라구요

st.size()+1만큼 돌리니 예제 케이스가 잘 출력되던데.. 이건 왜 이런걸까요? (물론 이것도 예제 케이스는 출력이 잘되는데 틀렸다고 나오더라고요..)

seawon0808   1년 전

pop을 하면 size가 바뀌어서 틀립니다.

shs0911   1년 전

53번째 줄 전까지 스택에 n개의 원소가 남아있다고 해봅시다.

그러면 이 n개의 원소를 모두 더해야 답이겠죠. 남아있는 원소들은 모두 마지막 0이 나온 이후의 원소들일테니까요.

이 때, 스택의 사이즈는 n입니다.

매 반복문마다 i를 증가시키고, stack에서 pop을 하므로, 각 변수 및 함수 리턴값은 다음과 같습니다. 편의상 n을 6이라고 가정해보겠습니다.

i = 0, st.size() = 6

i = 1, st.size() = 5

i = 2, st.size() = 4

i = 3, st.size() = 3

.....

과연 n개의 원소를 모두 출력할 수 있을까요?

yg04076   1년 전

헉... 그걸 간과하고 있었네요ㅠㅠ 바로 해결했습니다 매우 감사합니다!!!!

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