23.05.10 19:23 작성
·
274
1
import sys
sys.stdin = open("input.txt", "rt")
n = int(input()) # 마당 길이
ground = list() # 마당 격자판
for _ in range(n):
ground.append(list(map(int, input().split())))
m = int(input()) # 회전명령 개수
for TC in range(m):
idx, direc, turn = map(int, input().split())
tmp = 0
if direc == 0: # 왼쪽 회전
tmp = ground[idx-1][:turn]
del ground[idx-1][:turn]
ground[idx-1] += tmp
else: # 오른쪽 회전
tmp = ground[idx-1][-turn:]
del ground[idx-1][-turn:]
for i in range(len(tmp)):
ground[idx-1].insert(i, tmp[i])
s, e = 0, n-1
ans = 0
for i in range(n):
if i < n//2:
ans += sum(ground[i][s:e+1])
s += 1
e -= 1
else:
ans += sum(ground[i][s:e+1])
s -= 1
e += 1
print(ans)
곶감(사과나무)문제에 대한 코드를 작성해봤는데, 3번과 4번 테스트 케이스만 오답으로 나옵니다. 어느 부분이 잘못됐는지 찾지 못하여 질문드립니다!
답변 1
0
2023. 05. 13. 07:38
안녕하세요^^
3번 케이스 같은 경우 13 * 13 크기의 2차원 배열에서 회전을 하는데 위에 코드는
4번째 명령인 5 0 25를 제대로 수행하지 못하는 것 같습니다. 5번 행을 왼쪽으로 25칸 움직이는 것인데 움직이는 칸수가 25칸으로 13을 넘어가서 계산이 잘못 되는 것 같습니다.
3번 케이스의 5 0 25 명령이 잘 수행되는지 디버그해보세요.
2023. 05. 13. 19:39
배열 크기를 벗어나는 회전값에 대해 회전값 - 배열길이로 값을 보정하여 해결했습니다!
감사합니다 ㅎㅎ