


2125. Number of Laser Beams in a Bank
각 행마다 1이 몇개씩 있는지를 세고, 이전과 이후 행의 곱을 차례로 더하는 방식으로 코드를 짰다.
이 경우에는 시간복잡도는 이다.
class Solution:
def numberOfBeams(self, bank: List[str]) -> int:
temp = dict()
for i, row in enumerate(bank):
for cell in row:
if cell == "1":
temp[i] = temp.get(i, 0) + 1
if len(temp) == 1:
return 0
cnt = list(temp.values())
ans = sum(cnt[i] * cnt[i+1] for i in range(0, len(cnt)-1))
return ans

문제 풀이의 방식은 같지만 코드는 더 효율적이다
이 경우도 시간복잡도는 이다.
class Solution:
def numberOfBeams(self, bank: List[str]) -> int:
ans=0
prev=0
for row in bank:
dev=row.count('1')
if dev>0:
ans+=dev*prev
prev=dev
return ans

그래도 우선 풀면 됐다.