leetcode-2125. Number of Laser Beams in a Bank

Youngsun Joung·2025년 10월 28일

Leetcode

목록 보기
15/66

1. 문제 소개

2125. Number of Laser Beams in a Bank

2. 나의 풀이법

각 행마다 1이 몇개씩 있는지를 세고, 이전과 이후 행의 곱을 차례로 더하는 방식으로 코드를 짰다.
이 경우에는 시간복잡도는 O(mn)O(mn)이다.

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

3. 다른 풀이법

문제 풀이의 방식은 같지만 코드는 더 효율적이다
이 경우도 시간복잡도는 O(mn)O(mn)이다.

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

4. 결론

그래도 우선 풀면 됐다.

profile
Junior AI Engineer

0개의 댓글