[HR] : Organizing Containers of Balls

yozzum·2022년 7월 12일
0

내가 짠 코드

def organizingContainers(container):
    # Write your code here
    row_sums = []
    for item in container:
        row_sums.append(sum(item))
        
    col_sums = [0] * len(container)
    for i in range(len(container)):
        for j in range(len(container)):
            col_sums[j] += container[i][j]
    
    if (sorted(row_sums) == sorted(col_sums)):
        return "Possible"
    else:
        return "Impossible"

설명

  • 컨테이너 간 스왑 기능만이 가능하다.
  • 이 말은 각 컨테이너 안에 있는 공의 개수는 변할 수 없다는 것이다.
  • 예를 들어 만약 빨간공이 9개, 파란공이 4개가 있는데,
  • 1번 컨테이너에는 공이 8개, 2번 컨테이너에는 5개가 있다면 절대로 하나의 컨테이너에 빨간공이나 파란공을 몰아 넣을 수 없다.
  • 하나의 컨테이너에 빨간공 9개를 넣을 수가 없는 것이다.
  • 따라서 각 컨테이너에 들어있는 공의 개수를 정렬하고,
  • 각 타입에 대한 공의 개수를 정렬하면,
  • 이 두 리스트는 정확히 똑같아야 한다.

로직

  • 각 컨테이너에 담긴 공의 수를 더해서 리스트에 넣는다.
  • 각 타입에 대한 공의 수를 더해서 리스트에 넣는다.
  • 두 리스트를 정렬한다.
  • 두 리스트를 비교하여 True 면 "Possible", False 면 "Impossible"을 return 한다.
profile
yozzum

0개의 댓글