만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/programmers&bj

[C++][SWEA] 1206. View

D36choi 2020. 3. 14. 16:26
728x90

느낀바

처음엔 만약 3번째 위치 빌딩의 높이가 5이면

building[2][]

= 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 ...

이런식으로 해서 하려고 했는데

굉장히 무식한 방법인 것이었다. 조망권이 있는다라는 것은

i번째 빌딩의 높이가 250 이면

i-2,i-1,i+1,i+2 번째 빌딩보다 얼마나 "최소한" 높은지를 계산하면 되는 것이었다...

만약 i번째빌딩이 위 4개 빌딩보다 높다면 자연스럽게 i-2,i-1,i+1,i+2 번째 빌딩은 높이가 어떻든간에 i번째 빌딩보다

낮은 것이므로 계산할 필요도 없다. 위 코드엔 이 부분은 포함되지 않았지만

실행시간을 자연스레 더 줄일 수 있겠다 싶다. 아마 스트레스 테스트가 있는 문제라면 이것도 생각해야할 듯 싶다.