코딩 공부/Leetcode
[Python] 1769. Minimum Number of Operations to Move All Balls to Each Box
일하는 공학도
2025. 1. 15. 13:42
728x90
난이도 : medium (첫번째 medium 문제다..! 그래도 금방 풀었다)
boxes에 나온 순서대로, "0"은 비어있는 박스고 "1"은 공 1개가 있다.
이것을 하나의 box로 몰아서 옮긴다면, 공을 총 몇 번 움직여야 하는가를,
각 자리별로 계산해야 한다.
이번에는 코드를 작성하기 전에 생각을 먼저 했다.
예를 들어 1번 자리에 공이 있다면,
1번에서 다른 자리에 공을 옮기려면 총 몇 번을 움직여야 하는가? 를 리스트로 만들었다.
그 리스트를 1번부터 n번까지 차근차근 더하면 될 것이라 구상했다.
class Solution(object):
def minOperations(self, boxes):
"""
:type boxes: str
:rtype: List[int]
"""
n = len(list(boxes))
tem = [0 for i in range(n)]
for i, num in enumerate(boxes):
i_list = list(range(n))
if num == "1":
num_list = [abs(x-i) for x in i_list]
tem = [tem[i] + num_list[i] for i in range(n)]
return tem
- boxes를 리스트로 만들고 ("110" -> ["1", "1", "0']), 리스트의 갯수를 box라 명함
- boxes와 동일한 갯수를 가진 0만 있는 리스트를 tem이라 정함
- i_list는 0부터 n까지 리스트를 제작했다.
- num 값이 "1"이라면, x-i를 절대값으로 취한 리스트인 num_list를 제작. 이것이 바로 다른 자리로 공을 옮길 때의 수
- tem 리스트에 num_list를 더해줌
Runtime : 3108ms (25.11%)
Memory : 12.93MB (8.41%)
728x90