본문 바로가기
백준

[미해결][12976] 돌 옮기기 - python 코드

by mlice1030 2022. 3. 23.

알고리즘 설계 기법

  • 모르겠음. 없는 듯

런타임 에러났다.. 지금 작성한 코드는 답이 나오긴 하는 것 같은데, 코드를 써놓고 딱 봐도 시간 엄청 걸리게 생겼다. 

코드

N = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

def find(a, b):
    if sum(a) != sum(b): return -1
    else:
        arr = []
        result = 0
        for i in range(N):
            arr.append(a[i]-b[i]) #음수: 부족한 양 양수:넘치는 양
        for i in range(N):
            if arr[i] < 0:
                x = y = i
                while arr[i] != 0:
                    while (arr[x] <= 0 and arr[y] <= 0):
                        x -= 1
                        y += 1
                    if arr[x] > 0:
                        result += i - x
                        arr[x] -= 1
                        arr[i] += 1
                    elif arr[y] > 0:
                        result += y - i
                        arr[y] -= 1
                        arr[i] += 1
        return result
print(find(a, b))

줄이는 방법이 뭐일지는 생각해봐야 할 듯

'백준' 카테고리의 다른 글

[2321] 수 복원하기 - python 풀이  (0) 2022.03.23
[3029] 경고 - python 풀이  (0) 2022.03.22
[3028] 창영마을 - python 풀이  (0) 2022.03.22
[12887] 경로 게임 - python 풀이  (0) 2022.03.19
[14501] 퇴사 - python 풀이  (0) 2022.03.18

댓글