곳감문제에 대한 질문사항이 있습니다.
저는 '원소 이동 부분'과 '모래시계 모양 합하는 부분' 이렇게 두 부분으로 나눠서 코드를 작성하였습니다.
이 코드로 답을 돌려보니, 3, 4번 예시에서 오답처리가 되었습니다.
이 코드로 3, 4번을 돌렸을 때 각각 4992, 6833이 나왔습니다.
어느 부분이 잘못되었길레, 저 두 예시에선 오답처리가 되었는지 모르겠습니다.
디버깅을 여러번 해봤는데도, 어디가 문제점인지 찾지 못하였습니다.
자세한 답변 부탁드립니다.
감사합니다.
import sys
sys.stdin = open(r"in4.txt", "r")
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
m = int(input())
b = [list(map(int, input().split())) for _ in range(m)]
print("a :", a, "\n")
print("b :", b, "\n")
def sand_clock():
# 원소 이동 부분
for i in b:
stack = []
row_number, direction, move_count = i
move_count = move_count%(len(a)+1)
if direction == 0:
target = a[row_number - 1]
for j in range(move_count):
stack.append(target.pop(0))
for k in range(len(stack)):
target.append(stack.pop(0))
# print(row_number, ":", target)
a[row_number - 1] = target
elif direction == 1:
target = a[row_number - 1]
for j in range(move_count):
stack.append(target.pop())
for k in range(len(stack)):
target.insert(0, stack.pop(0))
# print(row_number, ":", target)
a[row_number - 1] = target
print("processed_a :", a ,"\n")
# 모래시계 모양 합하는 부분
left = 0
right = len(a)
sum_list = []
for i in range((len(a)//2)+1):
row_list = a[i][left:right]
print("row_list :", row_list, "\n")
row_sum = sum(row_list)
sum_list.append(row_sum)
left = left + 1
right = right - 1
left = (len(a)//2)-1
right = (len(a)//2) + 1
for j in range((len(a)//2)+1, len(a)):
row_list = a[j][left : right + 1]
print("row_list :", row_list, "\n")
row_sum = sum(row_list)
sum_list.append(row_sum)
left = left - 1
right = right + 1
print(sum_list)
final_result = sum(sum_list)
print("final_result :", final_result)
sand_clock()