문제를 간단하게 설명하자면, 아래 그림에서 막대의 수를 구하는것이다.
주어진 Input은 List이다.
bank = ["011001","000000","010100","001000"]
여기서 나의 접근은
모두가 0인 list 원소를 없애고나서 1의갯수끼리 곱한것을 계속 더해서 반환하는 것이다.
그러기 위해서는 예시 bank의 두번째 원소를 지워야하는데, 나는 파이썬의 반복문을 계속 탐색하면서 지우는 방법을 몰랐다.
왜냐하면 지우면서 인덱스가 의도치 못하게 바뀌기 때문이다.
for i in bank[:]:
if i.count('1') == 0:
bank.remove(i)
위와 같은 방법인 콜론(:)을 추가해서 지우면 된다.
for i in bank -> for i in bank[:]
이렇게 하면 반복문을 계속 탐색하면서 지울 수 있다.
그 후, bank.count('1')을 통해서 1의 갯수를 카운팅하고 곱하면된다.
for i in range(len(bank)-1):
answer += bank[i].count('1') * bank[i+1].count('1')
정답 코드
class Solution:
def numberOfBeams(self, bank: List[str]) -> int:
answer = 0
for i in bank[:]:
if i.count('1') == 0:
bank.remove(i)
for i in range(len(bank)-1):
answer += bank[i].count('1') * bank[i+1].count('1')
return answer
[Programmers][Python] 의상 (0) | 2024.01.04 |
---|---|
[LeetCode][Python]2870. Minimum Number of Operations to Make Array Empty (0) | 2024.01.04 |
[LeetCode][Python] 7. Reverse Integer (0) | 2024.01.02 |
[Programmers][Python] H-Index (1) | 2024.01.02 |
[LeetCode][Python]1578. Minimum Time to Make Rope Colorful (2) | 2023.12.27 |
댓글 영역