[Python 문제풀이] 프로그래머스 '파괴되지 않은 건물'
Programmers Lv.3 파괴되지 않은 건물 파이썬 문제풀이 조건파악 board의 크기 최대 (1,000 x 1,000) skill의 길이 최대 (250,000) 얼핏 보면 상당히 쉬운 문제이지만 효율성 테스트를 통과하기 어렵다. 단순한 알고리즘을 이용할 경우 최악의 경우 board에 있는 모든 원소인 1,000,000개에 대해 250,000번 연산을 수행해야 한다. 따라서 N은 최대 250,000,000,000이므로 O(N*M)의 방법으로는 도저히 풀 수 없게 된다. 접근 스킬들에 따른 영향을 사전에 모두 계산해놓은 뒤, board에 한 번에 합산한다. board의 원소 수를 N, skill의 길이를 M이라 하자. 이 경우 수행되는 연산의 수는 대략 k*M + N이다.(k는 임의의 가중치) 즉 시..