Skip to content

Conversation

calculus12
Copy link
Collaborator

사고 흐름

입력이 100,000 이므로 당연히 O(N^2)의 완전 탐색으로는 풀 수 없음

그렇다면 배열을 O(N)에 한번에 스캔하면서 볼 수 있는 건물을 체크해야 된다는 것.

문제의 중요한 조건은 바로 이것이었음 -> 자기 건물 보다 큰 건물만 볼 수 있고 뒤에 가려진 건물은 볼 수 없다.

이 조건을 보자마자 이전에 풀었던 #43 문제가 생각났고, 단조 스택으로 풀 수 있다고 생각했다.

차이점은 앞, 뒤로 볼 수 있는 것이기에 for 문을 두 번 돌렸어야 된다는 것.

즉, 앞에서 볼 수 있는 건물을 검사하는 for문 하나와 뒤에서 볼 수 있는 건물을 검사하는 for문 -> O(2N)으로 풀 수 있었다.

복기

스택은 큐와 다르게 배열로 쉽게 구현할 수 있다. (물론 큐도 원형큐로 잘 구현하면 됨)
STL에 구현되어 있는 스택을 사용하지 않고 정적으로 배열을 선언하고 이를 스택으로 사용하여 오버헤드를 줄이고 시간을 최소화 했다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant